def auth_factory(app, handler):
"""
????????, ????????????
:param app: WEB????
:param handler: ??????
:return: ???????
"""
async def auth(request):
request.__user__ = None
# ?COOKIE????????, ??????????
cookie_name = configs.user_cookie.name
cookie_str = request.cookies.get(cookie_name)
if cookie_str:
user = await user_cookie_parse(cookie_str, configs.user_cookie.secret)
if user:
request.__user__ = user
# ??????, ??????????
if request.path.startswith('/manage/') and (request.__user__ is None or not request.__user__['admin']):
return web.HTTPFound('/')
return await handler(request)
return auth
评论列表
文章目录