1
fushall 227 天前 1
不知道楼主老哥是不是用 RBAC 那种的权限管理。
这种的话手写就行了,代码其实没有很多,用了 ORM 直接连表查询就行 RBAC ,其实就是角色表,权限表,权限角色表,再来个用户角色表,四个表,把你系统的用户 ID 和角色放在用户角色表就行。 |
2
GeekGao 227 天前
如果只是校验用户和组匹配,很简单,自己撸就行了
|
3
GeekGao 227 天前
```python
from fastapi import Depends, FastAPI, HTTPException, status from fastapi.security import OAuth2PasswordBearer import jwt app = FastAPI() oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token") def get_current_user(token: str = Depends(oauth2_scheme)): try: payload = jwt.decode(token, "your_secret_key", algorithms=["HS256"]) user_id = payload.get("sub") if user_id is None: raise credentials_exception # 在这里,你可以检查用户是否存在以及用户所属的组是否存在 # 例如:user = get_user_from_db(user_id) # if user is None or not user.group_exists: # raise credentials_exception except jwt.PyJWTError: raise credentials_exception return user_id @app.get("/users/me") async def read_users_me(user_id: str = Depends(get_current_user)): return {"user_id": user_id} ``` |
4
xianmofeng3 OP @fushall 是的老哥,主要是 我不太想在每一个方法都这样联查, 代码有点冗余,或者还有没有更好的方案不过还是谢谢你的回答
|
5
xianmofeng3 OP @GeekGao 我懂你意思的 我也是想过这么实现的, 我可能更想做成 user /add_tags put 这样的形式
|
6
xianmofeng3 OP |
7
xianmofeng3 OP |
8
misoomang 226 天前
casbin 是否可以参考下,主要是整理 rbac 模型数据,剩下的可以通过 middleware 的方式进行权限管控
|
9
xianmofeng3 OP @misoomang 好的老哥,除了 casbin 还有别的做法吗?就真的只能联查了吗
|
11
xianmofeng3 OP @gray0 好的老哥! 我先看看! 你真的是我的及时雨
|
12
xianmofeng3 OP @gray0 另外还想请教一个问题 就是 sqlalchemy async_create_engine 和 PG 数据库一起使用的时候是不是不能设置 schema
|
13
gray0 222 天前
@xianmofeng3 搜一搜把 貌似是指定 connect_args 这个参数 https://stackoverflow.com/questions/9298296/sqlalchemy-support-of-postgres-schemas
|