鉴权与授权中间件

为防止无关人员访问犯罪数据,蝙蝠侠为应用程序添加了基于 JWT(JSON Web Token)的身份验证和授权功能,并创建了用户表和用户注册接口。

设置鉴权中间件

from robyn.authentication import AuthenticationHandler, BearerGetter, Identity


class BasicAuthHandler(AuthenticationHandler):
    def authenticate(self, request: Request):
        token = self.token_getter.get_token(request)

        try:
            payload = crud.decode_access_token(token)
            username = payload["sub"]
        except Exception:
            return

        with SessionLocal() as db:
            user = crud.get_user_by_username(db, username=username)

        return Identity(claims={"user": f"{ user }"})


app.configure_authentication(BasicAuthHandler(token_getter=BearerGetter()))


@app.get("/users/me", auth_required=True)
async def get_current_user(request):
    user = request.identity.claims["user"]
    return user


得益于 Robyn 框架,哥谭市警察局现在能高效管理犯罪数据并实时追踪犯罪动态。蝙蝠侠利用该框架成功实现能够实际运用的程序,助力哥谭市打击犯罪。