def login_required(f):
@wraps(f)
async def decorated_function(*args, **kwargs):
for arg in args:
if isinstance(arg, Request):
uid = arg.get('session', {}).get('uid')
if uid is None:
return response.redirect(arg.app.url_for('auth.LoginView', next=arg.url))
try:
user = await User.objects.get(User.id == uid)
arg['uid'] = uid
arg['user'] = user
except User.DoesNotExist:
return response.redirect(arg.app.url_for('auth.LoginView', next=arg.url))
break
return await f(*args, **kwargs)
return decorated_function
评论列表
文章目录