用户保持登录状态 本篇是基于session验证登录
最不可行的方法就是在每一个需要验证用户的视图函数上加装饰器 @login_required 每个认证函数都加的话比较繁琐。
可行的办法是在访问视图函数前给他来一个拦截 中间件就派上用场了。
首先你需要定义一些不需要登录验证的页面集合。例如:
# 无需登录接口
no_login_urls = [ '/', '/check/', '/register/', '/login/']
然后你需要 在middleware里的AuthenticationMiddleware 定义视图函数 def process_request(self, request) 请求确定视图函数之前加入限制条件,以下为程序代码实现:
class AuthenticationMiddleware(MiddlewareMixin):
def process_request(self, request):
re_method = request.method
if re_method == 'OPTIONS' or (re_method == 'POST' and not request.body):
return HttpResponse()
if next((0 for x in no_login_urls if x in request.path), 1):
if not request.user.is_authenticated:
return HttpResponse(json.dumps(dict(message="not_login")))
if not request.user.status: