Chen学无止境 2023-11-12 00:55 采纳率: 0%
浏览 7

sanic-auth如何作用在蓝图上

如题,使用sanic-auth对路由可以进行用户认证,如何对注册到app中的蓝图中的路由进行用户认证。

  • 写回答

1条回答 默认 最新

  • 木头人123。 2023-11-12 10:22
    关注

    在 Sanic 中,蓝图(Blueprint)是一种组织路由的方式,可以让你把路由分组,以便于管理和模块化。

    同样的,sanic-auth 是一个用于 Sanic 的用户认证库,可以帮助你处理用户的登录、注销以及保护路由等操作。

    要在蓝图上使用 sanic-auth 进行认证,你可以在蓝图的每个路由处理函数上使用 sanic-auth 的装饰器。例如:

    from sanic import Blueprint
    from sanic.response import text
    from sanic_auth import Auth, User
    
    app = Sanic(name='my_app')
    auth = Auth(app)
    
    bp = Blueprint('my_blueprint')
    
    @bp.route('/protected')
    @auth.login_required(user_keyword='user')
    async def protected(request, user):
        return text(f'Hello {user.id}')
    
    app.blueprint(bp)
    

    在上面的代码中,我们使用了 @auth.login_required 装饰器对 protected 路由进行了保护。

    这样,只有已经登录的用户才能访问 /protected 路由,未登录的用户将被重定向到登录页面(默认是 /login)。

    注意,@auth.login_required 需要放在路由装饰器 @bp.route 的下面,因为 Python 的装饰器是从下到上逐层应用的。

    另外,user_keyword 参数是可选的,它告诉 sanic-auth 在路由处理函数的参数中传入用户对象的参数名。如果你不提供这个参数,那么用户对象将不会被传入路由处理函数。

    这样你就可以在蓝图的路由中进行用户认证了。

    评论

报告相同问题?

问题事件

  • 创建了问题 11月12日