Thread ENV: REMOTE_USER ist nicht gesetzt (46 answers)
Opened by rosti at 2024-05-26 09:48

Raubtier
 2024-06-11 17:37
#196415 #196415
User since
2012-05-04
1075 Artikel
BenutzerIn
[default_avatar]
2024-06-10T15:20:47 rosti
Quote
Wie trennst Du denn Authorization vom Code?


Inwiefern trennen? Ich habe in der Regel kleine oder auch größere REST-APIs.

Da ich in der Regel mit FastAPI&Python arbeite, so:

Code: (dl )
1
2
3
4
@router.get("/users", dependencies=[Depends(user_with_admin_rights)])
async def get_users(db: Annotated[AsyncSession, Depends(get_db)]) -> UserResponse:
result = await db.execute(...)
return [UserResponse.from_orm(u) for u in result.scalars()]


D.h. in den Dependencies wird definiert, wer das machen darf. Die Funktion user_with_admin_rights checkt dann, ob der aktuelle User ein Admin ist und das tun darf. (normalerweise gibt es mehr als nur User und Admin, im aktuellen Projekt habe ich gerade 4 Rollen, die alle unterschiedliche Dinge tun dürfen).

Wenn man will, kann man diese Dependency auch dem Router hinzufügen, sodass dann z.B. gleich alle Endpunkte unter /users (oder wo auch immer) bestimmte Rechte erfordern. Generell also über die Decorators gelöst. Glücklicherweise habe ich nur sehr selten den Fall, dass ich noch im Code selber eine Fallunterscheidung treffen muss (kommt aber vor).

View full thread ENV: REMOTE_USER ist nicht gesetzt