
Autorisiertes Sicherheitsforschungs-Labor: Reproduktion von CVE-2024-42370 / GHSA-4hq2-rpgc-r8r7 (Env-Injection in docs-preview.yml) — Snapshot von litestar-org/litestar@18d84d84
Automatisiertes Forschungsartefakt — nicht das Upstream-Projekt.
Dieses Repository ist ein Wegwerf-Labor, das von einer automatisierten Testumgebung für eine Masterarbeit an der Université Laval zur Reproduktion veröffentlichter GitHub-Actions-Workflow-Schwachstellen erstellt wurde. Es ist eine wörtliche Momentaufnahme von
litestar-org/litestarbeim Commit18d84d846b782ccaab06f550a4defce22b3082e8(2024-07-27), weiterverbreitet unter der eigenen Lizenz dieses Projekts, deren Datei unverändert in dieser Momentaufnahme enthalten ist.Das Upstream-Projekt ist nicht beteiligt, wird niemals angegriffen, und die hier untersuchte Schwachstelle ist bereits öffentlich. Jedes Secret und jede Variable in diesem Repository ist ein zufällig generierter Dummy-Wert — es ist kein echtes Zugangsdatenpaar vorhanden. Aktionsreferenzen und Runner-Images sind auf das fixiert, was sie am 2024-07-27 aufgelöst haben; siehe
pinning.mdin der Testumgebungsausgabe für jede an der Momentaufnahme vorgenommene Änderung.Fragen oder Einwände: [email protected]
Litestar ist ein leistungsstarkes, flexibles und dennoch meinungsstarkes ASGI-Framework, das sich auf die Entwicklung von APIs konzentriert und eine hochperformante Datenvalidierung und -analyse, Abhängigkeitsinjektion, erstklassige ORM-Integration, Autorisierungsprimitive und vieles mehr bietet, was benötigt wird, um Anwendungen zum Laufen zu bringen.
Schauen Sie sich die Dokumentation 📚 für einen detaillierten Überblick über seine Funktionen an!
Darüber hinaus kann Ihnen das Litestar-Fullstack-Repository einen guten Eindruck davon vermitteln, wie eine vollwertige Litestar-Anwendung aussehen könnte.
pip install litestar
## Schnellstart```python
from litestar import Litestar, get
@get("/")
def hello_world() -> dict[str, str]:
"""Keeping the tradition alive with hello world."""
return {"hello": "world"}
app = Litestar(route_handlers=[hello_world])
dataclasses, TypedDict, pydantic Version 1 und Version 2,
msgspec und attrsLitestar ist ein Open-Source-Projekt, und wir freuen uns über die Unterstützung unserer Sponsoren, die dazu beiträgt, die spannende Arbeit zu finanzieren, die wir leisten.
Ein riesiges Dankeschön an unsere Sponsoren:
Wenn Sie die Arbeit, die wir leisten, unterstützen möchten, ziehen Sie bitte in Betracht, Sponsor zu werden über Polar.sh (bevorzugt), GitHub oder Open Collective.
Außerdem können Sie exklusiv über Polar pledge-basierte Sponsorschaften eingehen.
Während funktionsbasierte Routen-Handler unterstützt werden, unterstützt und fördert Litestar auch Python-OOP mithilfe klassenbasierter Controller:
from litestar import Controller, get, post, put, patch, delete from litestar.dto import DTOData from pydantic import UUID4
from my_app.models import User, PartialUserDTO
class UserController(Controller): path = "/users"
@post()
async def create_user(self, data: User) -> User: ...
@get()
async def list_users(self) -> List[User]: ...
@get(path="/{date:int}")
async def list_new_users(self, date: datetime) -> List[User]: ...
@patch(path="/{user_id:uuid}", dto=PartialUserDTO)
async def partial_update_user(
self, user_id: UUID4, data: DTOData[PartialUserDTO]
) -> User: ...
@put(path="/{user_id:uuid}")
async def update_user(self, user_id: UUID4, data: User) -> User: ...
@get(path="/{user_name:str}")
async def get_user_by_name(self, user_name: str) -> Optional[User]: ...
@get(path="/{user_id:uuid}")
async def get_user(self, user_id: UUID4) -> User: ...
@delete(path="/{user_id:uuid}")
async def delete_user(self, user_id: UUID4) -> None: ...
</details>
### Datenparsing, Typannotationen und Msgspec
Litestar ist streng typisiert und erzwingt Typisierung. Wenn du beispielsweise vergisst, einen Rückgabewert für einen
Route-Handler zu typisieren, wird eine Ausnahme ausgelöst. Der Grund dafür ist, dass Litestar Typdaten verwendet, um
OpenAPI-Spezifikationen zu generieren sowie Daten zu validieren und zu parsen. Daher ist Typisierung für das Framework
unerlässlich.
Darüber hinaus ermöglicht Litestar die Erweiterung seiner Unterstützung durch Plugins.
### Plugin-System, ORM-Unterstützung und DTOs
Litestar verfügt über ein Plugin-System, das es dem Benutzer ermöglicht, Serialisierung/Deserialisierung,
OpenAPI-Generierung und andere Funktionen zu erweitern.
Es wird mit einem integrierten Plugin für SQLAlchemy ausgeliefert, das es dem Benutzer ermöglicht, SQLAlchemy
deklarative Klassen „nativ" zu verwenden, d. h. als Typparameter, die serialisiert/deserialisiert werden, und sie als
Werte von Route-Handlern zurückzugeben.
Litestar unterstützt auch die programmatische Erstellung von DTOs mit einer `DTOFactory`-Klasse, die ebenfalls die
Verwendung von Plugins unterstützt.
### OpenAPI
Litestar verfügt über eine eigene Logik zur Generierung von OpenAPI-3.1.0-Schemata, einschließlich der optionalen
Generierung von Beispielen mithilfe der Bibliothek
[`polyfactory`](https://pypi.org/project/polyfactory/).
#### ReDoc, Swagger-UI und Stoplight Elements API-Dokumentation
Litestar stellt die Dokumentation aus dem generierten OpenAPI-Schema bereit mit:
- [ReDoc](https://redoc.ly/)
- [Swagger-UI](https://swagger.io/tools/swagger-ui/)
- [Stoplight Elements](https://github.com/stoplightio/elements)
- [RapiDoc](https://rapidocweb.com/)
Alle diese sind verfügbar und standardmäßig aktiviert.
### Dependency Injection
Litestar verfügt über ein einfaches, aber leistungsstarkes DI-System, das von pytest inspiriert ist. Du kannst benannte
Abhängigkeiten – synchron oder asynchron – auf verschiedenen Ebenen der Anwendung definieren und sie dann selektiv
verwenden oder überschreiben.
<details>
<summary>Beispiel für DI</summary>```python
from litestar import Litestar, get
from litestar.di import Provide
async def my_dependency() -> str: ...
@get("/")
async def index(injected: str) -> str:
return injected
app = Litestar([index], dependencies={"injected": Provide(my_dependency)})
Litestar unterstützt typische ASGI-Middleware und wird mit Middlewares ausgeliefert, die Dinge wie
abdecken.
Litestar verfügt über einen Autorisierungsmechanismus namens guards, der es dem Benutzer ermöglicht, Guard-Funktionen auf verschiedenen
Ebenen der Anwendung (App, Router, Controller usw.) zu definieren und die Anfrage zu validieren, bevor die Routen-Handler-Funktion
erreicht wird.
from litestar.connection import ASGIConnection from litestar.handlers.base import BaseRouteHandler from litestar.exceptions import NotAuthorizedException
async def is_authorized(connection: ASGIConnection, handler: BaseRouteHandler) -> None: # validate authorization # if not authorized, raise NotAuthorizedException raise NotAuthorizedException()
@get("/", guards=[is_authorized]) async def index() -> None: ...
app = Litestar([index])
</details>
### Hooks für den Anfrage-Lebenszyklus
Litestar unterstützt Hooks für den Anfrage-Lebenszyklus, ähnlich wie Flask – d. h. `before_request` und `after_request`
## Leistung
Litestar ist schnell. Es ist auf Augenhöhe mit oder deutlich schneller als vergleichbare ASGI-Frameworks.
Die Benchmarks kannst du [hier](https://github.com/litestar-org/api-performance-tests) ansehen und ausführen,
oder in unserer Dokumentation [hier](https://docs.litestar.dev/latest/benchmarks) mehr darüber lesen.
## Mitwirken
Litestar ist offen für Beiträge, ob groß oder klein. Du kannst jederzeit unserem [Discord-Server](https://discord.gg/X3FJqy8d2j) beitreten
oder unseren [Matrix-Raum](https://matrix.to/#/#litestar:matrix.org) nutzen,
um Beiträge und Projektwartung zu besprechen. Richtlinien zum Mitwirken findest du
in [der Mitwirkungsanleitung](https://github.com/pvharmo2/gha-lab-ba8e0c4217/blob/main/CONTRIBUTING.rst).
<!-- contributors-start -->
## Mitwirkende ✨
<details>
<summary>Dank geht an diese wunderbaren Menschen:</summary>
<a href="https://allcontributors.org/docs/en/emoji-key">Emoji-Schlüssel </a><!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tbody>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://www.linkedin.com/in/nhirschfeld/"><img src="https://assets.kitploit.com/production/public/readmes/54125/f4402f9bd55d0c38153c6130da7580c4e2691fd34453865a204f75b6a444edb1/86c6c5b903d105fc174017914eb2a96c53cf9082818df2e263dc47eb339960ce-display-v1.webp" width="100px;" alt="Na'aman Hirschfeld"/><br /><sub><b>Na'aman Hirschfeld</b></sub></a><br /><a href="#maintenance-Goldziher" title="Maintenance">🚧</a> <a href="https://github.com/litestar-org/litestar/commits?author=Goldziher" title="Code">💻</a> <a href="https://github.com/litestar-org/litestar/commits?author=Goldziher" title="Documentation">📖</a> <a href="https://github.com/litestar-org/litestar/commits?author=Goldziher" title="Tests">⚠️</a> <a href="#ideas-Goldziher" title="Ideas, Planning, & Feedback">🤔</a> <a href="#example-Goldziher" title="Examples">💡</a> <a href="https://github.com/litestar-org/litestar/issues?q=author%3AGoldziher" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/peterschutt"><img src="https://assets.kitploit.com/production/public/readmes/54125/a56e82cb821c908545d0067dc50df5817eca319879f78f8779aca13ebefa362b/a65c715a3e245969f1105298df74193398638e471b4ce9a2768dfb0c0b4cb548-display-v1.webp" width="100px;" alt="Peter Schutt"/><br /><sub><b>Peter Schutt</b></sub></a><br /><a href="#maintenance-peterschutt" title="Maintenance">🚧</a> <a href="https://github.com/litestar-org/litestar/commits?author=peterschutt" title="Code">💻</a> <a href="https://github.com/litestar-org/litestar/commits?author=peterschutt" title="Documentation">📖</a> <a href="https://github.com/litestar-org/litestar/commits?author=peterschutt" title="Tests">⚠️</a> <a href="#ideas-peterschutt" title="Ideas, Planning, & Feedback">🤔</a> <a href="#example-peterschutt" title="Examples">💡</a> <a href="https://github.com/litestar-org/litestar/issues?q=author%3Apeterschutt" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://ashwinvin.github.io"><img src="https://assets.kitploit.com/production/public/readmes/54125/23adb745982227a24fff8903555abc8f53dfd3d63ff2eff1767b9df30462013e/e0bdeef951eeaf745ca738e8bf159cbd312f30e5433da5caee6fc3629216f698-display-v1.webp" width="100px;" alt="Ashwin Vinod"/><br /><sub><b>Ashwin Vinod</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=ashwinvin" title="Code">💻</a> <a href="https://github.com/litestar-org/litestar/commits?author=ashwinvin" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://www.damiankress.de"><img src="https://assets.kitploit.com/production/public/readmes/54125/56aabd4ee6987dcba68c0c2e3e822e22caec36a9e25e32686201548596933f2b/85cf56592dc0e33a04cec96dd36a158919d7f325d6a919a3341f501c84dc6a91-display-v1.webp" width="100px;" alt="Damian"/><br /><sub><b>Damian</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=dkress59" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://remotepixel.ca"><img src="https://assets.kitploit.com/production/public/readmes/54125/512f419b221227c898b114dc66d89bf66b406460bd38838863884133ff9b6dee/14af457a3d67003240a217a6ebb8b493e24e997fae3b0cc3bc73b67ecbd72577-display-v1.webp" width="100px;" alt="Vincent Sarago"/><br /><sub><b>Vincent Sarago</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=vincentsarago" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://hotfix.guru"><img src="https://assets.kitploit.com/production/public/readmes/54125/5e658468df586304500ab4fb705fad107f912833cd1da627d6af7019454b4928/945a0bdf0061a1504bc8cab05fd83d1fb25dda7a176c645e8867ba2b5a1c54dc-display-v1.webp" width="100px;" alt="Jonas Krüger Svensson"/><br /><sub><b>Jonas Krüger Svensson</b></sub></a><br /><a href="#platform-JonasKs" title="Packaging/porting to new platform">📦</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sondrelg"><img src="https://assets.kitploit.com/production/public/readmes/54125/59c8e74211247a6ac94f9a475b94b43d6657f744326449f6dc1d7ea4d2526930/801354eece401f0ed46bf97f5397fd8895b3146a7432bff450081f80ece257de-display-v1.webp" width="100px;" alt="Sondre Lillebø Gundersen"/><br /><sub><b>Sondre Lillebø Gundersen</b></sub></a><br /><a href="#platform-sondrelg" title="Packaging/porting to new platform">📦</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/vrslev"><img src="https://assets.kitploit.com/production/public/readmes/54125/cc22f022ad70cbda21c9eab68c9a4103f3045af11c021a23a827d8977414cc08/fe418f8315719b14d304c49b420541b623a53e4749b442069b27b6532991f1c6-display-v1.webp" width="100px;" alt="Lev"/><br /><sub><b>Lev</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=vrslev" title="Code">💻</a> <a href="#ideas-vrslev" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/timwedde"><img src="https://assets.kitploit.com/production/public/readmes/54125/61a82f76e834ab13c2532e4d16e19ab0c5ff3f23ce25dc53f280545a384a2edc/6ab0765190429abfab3c086110c7391f72dd9df06236fa542cc9627027c34758-display-v1.webp" width="100px;" alt="Tim Wedde"/><br /><sub><b>Tim Wedde</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=timwedde" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/tclasen"><img src="https://assets.kitploit.com/production/public/readmes/54125/d177e4e767a2a010e9e20c7e2ccd9049e674e8304cf0c6cf4ff9c8271a0e4055/c738cd1040be71e3b8aaa4b00cdf90fc617008242df406112bef8aaddf8388af-display-v1.webp" width="100px;" alt="Tory Clasen"/><br /><sub><b>Tory Clasen</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=tclasen" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://t.me/Bobronium"><img src="https://assets.kitploit.com/production/public/readmes/54125/e243fe927ef2701ff5f5b3a1e1c256a60f9605efd2aa13546ee6159892dab0bd/ea0b5418d9bf6dd1d6b1649fb0d9665770ccf8f4957c9906739464a9559c4595-display-v1.webp" width="100px;" alt="Arseny Boykov"/><br /><sub><b>Arseny Boykov</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=Bobronium" title="Code">💻</a> <a href="#ideas-Bobronium" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/yudjinn"><img src="https://assets.kitploit.com/production/public/readmes/54125/f9881b5fd8f0203bd0fd4f0e638fc94553549aa2cbe7d3c7ef611764f2536be6/eade801852501b32e36fefa04ba3b0281a5c21383fc2c719481abf1229dee817-display-v1.webp" width="100px;" alt="Jacob Rodgers"/><br /><sub><b>Jacob Rodgers</b></sub></a><br /><a href="#example-yudjinn" title="Examples">💡</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/danesolberg"><img src="https://assets.kitploit.com/production/public/readmes/54125/ff569c2184bc300aa94a1011d161546e5b16720fa68d9120f2e00e1803b6f2bd/930e1b583d50cb8bfaa20c91fd96f5c90465332bc5fa84d1c0bd5b788fa4260a-display-v1.webp" width="100px;" alt="Dane Solberg"/><br /><sub><b>Dane Solberg</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=danesolberg" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/madlad33"><img src="https://assets.kitploit.com/production/public/readmes/54125/e792b8e7ecbe26c41feca6d0aa7466b8187207db435f352fef7fff88681dcfba/29407ae8b4fe1fd1bb27f485fbe1c8799a10e73253e8d5d29ac52d85492f378b-display-v1.webp" width="100px;" alt="madlad33"/><br /><sub><b>madlad33</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=madlad33" title="Code">💻</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="http://matthewtyleraylward.com"><img src="https://assets.kitploit.com/production/public/readmes/54125/3bffac7af746f12af08fd46f1106a575d8adf376f30d788685a54c11d07e17a8/5f5eaa03eeba82c8408eefed01ea3068228dc7751e0cd34a05e256cfc33c7359-display-v1.webp" width="100px;" alt="Matthew Aylward "/><br /><sub><b>Matthew Aylward </b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=Butch78" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Joko013"><img src="https://assets.kitploit.com/production/public/readmes/54125/3f089fbc0ddb0b31316b21ebde7275cc1308b63f0cfed4a81b2b651bf938c71b/90efaf18ab51b61dba8bc7aed12dfda70d209b44731271d50b7202c5d3ab6e59-display-v1.webp" width="100px;" alt="Jan Klima"/><br /><sub><b>Jan Klima</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=Joko013" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/i404788"><img src="https://assets.kitploit.com/production/public/readmes/54125/e1aba1dd1fe0bc19a9a8c6d657afa3359ebf0a1f8720ff2cc370e4ca83c37012/0a7cfa4b1466d8e4805dd58e799d61375a4784bbeb2b1bda749bce8468fd9bad-display-v1.webp" width="100px;" alt="C2D"/><br /><sub><b>C2D</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=i404788" title="Tests">⚠️</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/to-ph"><img src="https://assets.kitploit.com/production/public/readmes/54125/3d184bed6a07b3d5d2b9274629ad8bf36b96bd63d8c66e54cd55cb5820e8524f/b8a2533dfe6785389a3bffc1173283b8edc5c81d3b80d6ecfcc2f1f28d0d1d93-display-v1.webp" width="100px;" alt="to-ph"/><br /><sub><b>to-ph</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=to-ph" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://imbev.gitlab.io/site"><img src="https://assets.kitploit.com/production/public/readmes/54125/6146ea265b16d445dfc88dbe6f970a0d5dcfff350224ff0fea8e36f7662679c1/48cb0289d06635fccc0c1c805b9361dc0ab2f8eabb53cace7dc3726274ec6e67-display-v1.webp" width="100px;" alt="imbev"/><br /><sub><b>imbev</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=imbev" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://git.roboces.dev/catalin"><img src="https://assets.kitploit.com/production/public/readmes/54125/913f9392ff871b91d59b6bcca91528fabab38d7992889d22edb37e8659e3df3c/fda62032d3387fe68c6c8c282aedcaaf42b451b86f3b4f30af2fa36a26dbdf16-display-v1.webp" width="100px;" alt="cătălin"/><br /><sub><b>cătălin</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=185504a9" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Seon82"><img src="https://assets.kitploit.com/production/public/readmes/54125/cfa9e4a9e6bb3ab325a5ae7d344abc2acc8c52eee43dda34ee11d2907c07809d/b3235aba38c43779fe974eff543ef063002cd441f30d5ab2c448fd0e662be725-display-v1.webp" width="100px;" alt="Seon82"/><br /><sub><b>Seon82</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=Seon82" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/slavugan"><img src="https://assets.kitploit.com/production/public/readmes/54125/4d61d40991d73b242c8678bab66e6809eb86780eeae8f9d8dc098f607d1d8397/28635b7caf2c773ff6320ba21445d4f8e2adf32546028c2a3a754d928e335c2c-display-v1.webp" width="100px;" alt="Slava"/><br /><sub><b>Slava</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=slavugan" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Harry-Lees"><img src="https://assets.kitploit.com/production/public/readmes/54125/33499f12e7d47b28a493d52a6a4ac736f500018e266e53b571f6ff23610daa8e/31f7396f695381480e26ac0bfc7667371fc6e418a77c3e3e7f83bb7c0cb2312c-display-v1.webp" width="100px;" alt="Harry"/><br /><sub><b>Harry</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=Harry-Lees" title="Code">💻</a> <a href="https://github.com/litestar-org/litestar/commits?author=Harry-Lees" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/cofin"><img src="https://assets.kitploit.com/production/public/readmes/54125/6ef102acb41490655c7c9587ad7f36b6562f966dd89fc4982fb22486c1684d20/f97d2595c751f55d34a5fb0250ab84caf8f7393056949f58b28c4e753fc5ef97-display-v1.webp" width="100px;" alt="Cody Fincher"/><br /><sub><b>Cody Fincher</b></sub></a><br /><a href="#maintenance-cofin" title="Maintenance">🚧</a> <a href="https://github.com/litestar-org/litestar/commits?author=cofin" title="Code">💻</a> <a href="https://github.com/litestar-org/litestar/commits?author=cofin" title="Documentation">📖</a> <a href="https://github.com/litestar-org/litestar/commits?author=cofin" title="Tests">⚠️</a> <a href="#ideas-cofin" title="Ideas, Planning, & Feedback">🤔</a> <a href="#example-cofin" title="Examples">💡</a> <a href="https://github.com/litestar-org/litestar/issues?q=author%3Acofin" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.patreon.com/cclauss"><img src="https://assets.kitploit.com/production/public/readmes/54125/8d82b5728fc94ab53f624e2c8030ee4a2036c94f98c6da7b1d9c496eb187b102/774b146cc9cc159b7fd2300276cfb853b8413fbaeaa363d138f23c7e697d6327-display-v1.webp" width="100px;" alt="Christian Clauss"/><br /><sub><b>Christian Clauss</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=cclauss" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/josepdaniel"><img src="https://assets.kitploit.com/production/public/readmes/54125/f8d1f00190ffed5913cb3aabbb7f08dbe8f9375cdc3c701318931da057103417/f9be2313751956bef69d44e36ed66bf1564ca3ee0b6563507a60c6daead8f2af-display-v1.webp" width="100px;" alt="josepdaniel"/><br /><sub><b>josepdaniel</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=josepdaniel" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/devtud"><img src="https://assets.kitploit.com/production/public/readmes/54125/c0135f136b1a1f1c1a0640f6953a16aff2785c5effb38313b920a916742266ed/570a2960b77e4f7edef89356434ba90d6c6c722dcf14456695875273a452e0ed-display-v1.webp" width="100px;" alt="devtud"/><br /><sub><b>devtud</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/issues?q=author%3Adevtud" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nramos0"><img src="https://assets.kitploit.com/production/public/readmes/54125/5b85e16e6bfee6b545b15a661b1d66aa9304116b8df66545514d624676a8d021/9e7beafe62f0b08dca4bf4c5279a04a4c307fa658e87dfc73ee1e33b82941f8d-display-v1.webp" width="100px;" alt="Nicholas Ramos"/><br /><sub><b>Nicholas Ramos</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=nramos0" title="Code">💻</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/seladb"><img src="https://assets.kitploit.com/production/public/readmes/54125/2af4fa910e71cfe05fcdac37928cf9f17ad7c3185c71d253b5cb7b06d27ed1a3/b6f3ba6d554e1dbfa9bb909343782a4a05039fbbe2b7bcb72dd2650ad4ab91d8-display-v1.webp" width="100px;" alt="seladb"/><br /><sub><b>seladb</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=seladb" title="Documentation">📖</a> <a href="https://github.com/litestar-org/litestar/commits?author=seladb" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/aedify-swi"><img src="https://assets.kitploit.com/production/public/readmes/54125/8c0872af366dc5a9851a937ec499caf05db8b6ed4c2553a9fac3d070db82674d/f3a4b6abf7ea4ae7b8ca6661fec61f5e4a1013f4ee471f0b4f38b73114af1e8f-display-v1.webp" width="100px;" alt="Simon Wienhöfer"/><br /><sub><b>Simon Wienhöfer</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=aedify-swi" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mobiusxs"><img src="https://assets.kitploit.com/production/public/readmes/54125/9537c6790725f4c569ae38dea7722e2bc489dea3556c729cfd043bf82338564e/ef1fedf62de9f5ed4a5438aea376000a95c3e15b5edfc15d380ad4841a543993-display-v1.webp" width="100px;" alt="MobiusXS"/><br /><sub><b>MobiusXS</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=mobiusxs" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://aidansimard.dev"><img src="https://assets.kitploit.com/production/public/readmes/54125/d14a554c0f827c023783d3cb807c914786e35d25f027c6270272b732a07d67f5/ef4f3e588785bc83696f79ab32a7a30c104cfe6b9a94ffc40da79ec0e9c35ce2-display-v1.webp" width="100px;" alt="Aidan Simard"/><br /><sub><b>Aidan Simard</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=Aidan-Simard" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/waweber"><img src="https://assets.kitploit.com/production/public/readmes/54125/799eac68f18be48f8a3483e7653c701eba5c52c825c7062764c09c59f3ef081b/53a00939563838e56c04a538851f7d85ed576dd531760a08a39add8d450d4b9c-display-v1.webp" width="100px;" alt="wweber"/><br /><sub><b>wweber</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=waweber" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://scolvin.com"><img src="https://assets.kitploit.com/production/public/readmes/54125/bc42fe32b39302fbcf13562b19638e7e59cff31974853c51ee5cc0bb8efa4ff5/04666b66ec55df891db00d981661d6ed77977de9cef79a2a97b9d817d19d3ca7-display-v1.webp" width="100px;" alt="Samuel Colvin"/><br /><sub><b>Samuel Colvin</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=samuelcolvin" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/toudi"><img src="https://assets.kitploit.com/production/public/readmes/54125/d055bffdb1356f03cf1c705520a66954685f3fe2c5aa56724dcef05fb3fc59da/01a7f723600e146eec6240d03a03d2ef87bf46ebe119b119a1e3df532ad0f581-display-v1.webp" width="100px;" alt="Mateusz Mikołajczyk"/><br /><sub><b>Mateusz Mikołajczyk</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=toudi" title="Code">💻</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Alex-CodeLab"><img src="https://assets.kitploit.com/production/public/readmes/54125/b0e7cfded6e188e909a9c8afd217149f6f0f59ac48135787f327a0e55a8b2ba1/7878d36b0ecd8b27b7d11008af0f52b8ebce6d513faaf4294a5ba9ca9f567c81-display-v1.webp" width="100px;" alt="Alex "/><br /><sub><b>Alex </b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=Alex-CodeLab" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/odiseo0"><img src="https://assets.kitploit.com/production/public/readmes/54125/407f9f7cc9b26e885eff5ddcbea4fdc5fa038d45356c05e74683a6cd97e0f46e/17bfa919793f0eb02c325f728c34b5a954947dc9f4c21585354ac05a1697525c-display-v1.webp" width="100px;" alt="Odiseo"/><br /><sub><b>Odiseo</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=odiseo0" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ingjavierpinilla"><img src="https://assets.kitploit.com/production/public/readmes/54125/b9ce53fa990a97d55ce9bee6f169f0d5f0bbe81e2fe5205e90a133032cd88e31/2eb978885808a2b1564aa994135aec297138a705dc824b18388283a1f65e6add-display-v1.webp" width="100px;" alt="Javier Pinilla"/><br /><sub><b>Javier Pinilla</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=ingjavierpinilla" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Chaoyingz"><img src="https://assets.kitploit.com/production/public/readmes/54125/3654b2d0e656d882bb46c857babf531c145da4ec1773a9c772b8a5ea341966ec/ccd0a26030990b44d19086aba69842cd082ac751a950fa7c93f04a522a611e1b-display-v1.webp" width="100px;" alt="Chaoying"/><br /><sub><b>Chaoying</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=Chaoyingz" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/infohash"><img src="https://assets.kitploit.com/production/public/readmes/54125/f6b5e7f95d76b915f13f8609b584af60c01a5b2ad69e0031f6e944a5271db313/6e1d199b58013fc6a70cad8436ebaadf8b29b1b6ca70037ff990e064aaf18d12-display-v1.webp" width="100px;" alt="infohash"/><br /><sub><b>infohash</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=infohash" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.linkedin.com/in/john-ingles/"><img src="https://assets.kitploit.com/production/public/readmes/54125/9e80945cab5f42788d689f76c32879ede4d1483752105b04ec9d3401f04731b1/2fc96eb80e409fb0f5def65cff12dbc8cf75c9eb6ad8525ce9c8ffaf5516e719-display-v1.webp" width="100px;" alt="John Ingles"/><br /><sub><b>John Ingles</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=john-ingles" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/h0rn3t"><img src="https://assets.kitploit.com/production/public/readmes/54125/071053a9f88579959c8e3116947dbdbf2c591e6623843e6001d315e70121fd76/a382054902c78cb33066e03dc2f923c520e40424deabba72332e9f3dc16feba2-display-v1.webp" width="100px;" alt="Eugene"/><br /><sub><b>Eugene</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=h0rn3t" title="Tests">⚠️</a> <a href="https://github.com/litestar-org/litestar/commits?author=h0rn3t" title="Code">💻</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jonadaly"><img src="https://assets.kitploit.com/production/public/readmes/54125/2b3aca23fca599c12469ea5857b1692da95409f1d13e1036b092cc3627210e42/7a5ae2f5445c667223debb63d552c71eb6d497f065b32a25c94bf019b4056372-display-v1.webp" width="100px;" alt="Jon Daly"/><br /><sub><b>Jon Daly</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=jonadaly" title="Documentation">📖</a> <a href="https://github.com/litestar-org/litestar/commits?author=jonadaly" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://harshallaheri.me/"><img src="https://assets.kitploit.com/production/public/readmes/54125/3c7bd08c351c87f04f7f1e96b7c502d03eb4bbabd3711a8fbe0e1c3fb9c269c3/089e52b164250e79eaefdc33a26054611be3faf706fff7f203b3164c81389a35-display-v1.webp" width="100px;" alt="Harshal Laheri"/><br /><sub><b>Harshal Laheri</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=Harshal6927" title="Code">💻</a> <a href="https://github.com/litestar-org/litestar/commits?author=Harshal6927" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sorasful"><img src="https://assets.kitploit.com/production/public/readmes/54125/e157f46d2bf0ffeddd420f76470d9c368d449b2a9a4365b1efc9e654ca2321ea/270e16f701964a41c7b3571c2168dadeba26b414e91c62915e74a8539113cf5d-display-v1.webp" width="100px;" alt="Téva KRIEF"/><br /><sub><b>Téva KRIEF</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=sorasful" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jtraub"><img src="https://assets.kitploit.com/production/public/readmes/54125/26d68d19df7c59d1f6b34127f9ae6b117ebeb20b0efec63bd2f025db7c08298e/491e76647af1f081ede8f3e4573b8b59854d63623e171c55586c97a687feeeef-display-v1.webp" width="100px;" alt="Konstantin Mikhailov"/><br /><sub><b>Konstantin Mikhailov</b></sub></a><br /><a href="#maintenance-jtraub" title="Maintenance">🚧</a> <a href="https://github.com/litestar-org/litestar/commits?author=jtraub" title="Code">💻</a> <a href="https://github.com/litestar-org/litestar/commits?author=jtraub" title="Documentation">📖</a> <a href="https://github.com/litestar-org/litestar/commits?author=jtraub" title="Tests">⚠️</a> <a href="#ideas-jtraub" title="Ideas, Planning, & Feedback">🤔</a> <a href="#example-jtraub" title="Examples">💡</a> <a href="https://github.com/litestar-org/litestar/issues?q=author%3Ajtraub" title="Bug reports">🐛</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://linkedin.com/in/mitchell-henry334/"><img src="https://assets.kitploit.com/production/public/readmes/54125/3eace07ea9f88dcb5bb568453b1b53c8d79f55957196187b37e5097888f9e7d8/4b9bf9bfd301ee4e1dac9cb1905f67f99d516db19f464033b7689df0249af4af-display-v1.webp" width="100px;" alt="Mitchell Henry"/><br /><sub><b>Mitchell Henry</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=devmitch" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/chbndrhnns"><img src="https://assets.kitploit.com/production/public/readmes/54125/1a8ff0e0a6293fdb3ec02d6c890abd2764dc9e205eb52ac7e22e1c844b570ee7/4f303c19deed9a40b78b42615560ec615d655a21866d72cf953a6fbf3f1b4254-display-v1.webp" width="100px;" alt="chbndrhnns"/><br /><sub><b>chbndrhnns</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=chbndrhnns" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nielsvanhooy"><img src="https://assets.kitploit.com/production/public/readmes/54125/6f57ae6137cf78f77351821487e56fd3853e8d853a5f40cb5fd7979f8b0b7a5e/b1e40b10f75cb577e769e8a6cb11796cd6729e84fdd44c401a87d9622d71254c-display-v1.webp" width="100px;" alt="nielsvanhooy"/><br /><sub><b>nielsvanhooy</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=nielsvanhooy" title="Code">💻</a> <a href="https://github.com/litestar-org/litestar/issues?q=author%3Anielsvanhooy" title="Bug reports">🐛</a> <a href="https://github.com/litestar-org/litestar/commits?author=nielsvanhooy" title="Tests">⚠️</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/provinzkraut"><img src="https://assets.kitploit.com/production/public/readmes/54125/30f9f97c03cbdc20acc50e66245044ba71e960aac3ebe32e8a9df9e147e144f6/8a04ea0f923c34bce2790c40700b048bd6bb92a0b9efe7fbb65f138813c7b68f-display-v1.webp" width="100px;" alt="provinzkraut"/><br /><sub><b>provinzkraut</b></sub></a><br /><a href="#maintenance-provinzkraut" title="Maintenance">🚧</a> <a href="https://github.com/litestar-org/litestar/commits?author=provinzkraut" title="Code">💻</a> <a href="https://github.com/litestar-org/litestar/commits?author=provinzkraut" title="Documentation">📖</a> <a href="https://github.com/litestar-org/litestar/commits?author=provinzkraut" title="Tests">⚠️</a> <a href="#ideas-provinzkraut" title="Ideas, Planning, & Feedback">🤔</a> <a href="#example-provinzkraut" title="Examples">💡</a> <a href="https://github.com/litestar-org/litestar/issues?q=author%3Aprovinzkraut" title="Bug reports">🐛</a> <a href="#design-provinzkraut" title="Design">🎨</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jab"><img src="https://assets.kitploit.com/production/public/readmes/54125/b3f23149939f25bbbd8ff5eae26ca95b2e1c7b85d8a4bde050caa9627143eb78/73ebb63ac1c5820dd44c5a5c688e137c0bdeedc9290c5a1a8b6350099a6e80c9-display-v1.webp" width="100px;" alt="Joshua Bronson"/><br /><sub><b>Joshua Bronson</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=jab" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://linkedin.com/in/roman-reznikov"><img src="https://assets.kitploit.com/production/public/readmes/54125/fc987fa88c9684526eba83cd638453d9a16f095c2148074a0d1c07b791db2403/583b811c83fd8eb8daf43251c1b60a797f0d8aa96b5e780afe5c9f91abd68492-display-v1.webp" width="100px;" alt="Roman Reznikov"/><br /><sub><b>Roman Reznikov</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=ReznikovRoman" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://mookrs.com"><img src="https://assets.kitploit.com/production/public/readmes/54125/6a812dd51ac82f47c37bf9fe17c34f52b2e6caac09acbf126cf7438ca1cf6df2/7f8a81180b7ab8669e065528f6e7d5b5e989614f2705173795d8475d305fbbc1-display-v1.webp" width="100px;" alt="mookrs"/><br /><sub><b>mookrs</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=mookrs" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="http://mike.depalatis.net"><img src="https://assets.kitploit.com/production/public/readmes/54125/8aeffd009d5d563daf68d4fc3f33a06e836d7326b179d52093f6f1d7f0e419a4/55397ec632090452a1ea25ee6d353e39468dba64147db00abf9c96d71054347e-display-v1.webp" width="100px;" alt="Mike DePalatis"/><br /><sub><b>Mike DePalatis</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=mivade" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pemocarlo"><img src="https://assets.kitploit.com/production/public/readmes/54125/48a9ecccf55b3fa7657f2912f928c9356b3a96a9bac1aa1d016a945496fc6a17/fef75afa6c573bd6200c6480acf50fd5f02116d996f035fd603334c3d11decf0-display-v1.webp" width="100px;" alt="Carlos Alberto Pérez-Molano"/><br /><sub><b>Carlos Alberto Pérez-Molano</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=pemocarlo" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://www.bestcryptocodes.com"><img src="https://assets.kitploit.com/production/public/readmes/54125/e5f1a415e4d776bc0cc867d3555f77eee48bb688c386cf1bd8e69f423c5e0c4c/6aa060a7d18e76f5e676da579e8ba6d814900836933c7f12722c78d5f452e938-display-v1.webp" width="100px;" alt="ThinksFast"/><br /><sub><b>ThinksFast</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=ThinksFast" title="Tests">⚠️</a> <a href="https://github.com/litestar-org/litestar/commits?author=ThinksFast" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ottermata"><img src="https://assets.kitploit.com/production/public/readmes/54125/46c30ce09312a87901d38ee4bf9d43aa2c00d91ce7051d325ffef44db3b9053c/6ff18845272a7069b7bebe9a3b282b6ac5638ca67f2e2d48f86d04488e2ea580-display-v1.webp" width="100px;" alt="Christopher Krause"/><br /><sub><b>Christopher Krause</b></sub></a><br /><a href="https://github.com/litestar-org/litestar/commits?author=ottermata" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="http<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
Dieses Projekt folgt der [all-contributors](https://github.com/all-contributors/all-contributors)-Spezifikation.
Beiträge jeder Art sind willkommen!
</details>
<!-- contributors-end -->
| Community |
| Meta |