Day 20/12/30
用户登岸状态生存
在登岸乐成后使用session,将用户id写入到session中
- request.session['user_id'] = user_obj.pkrequest.session.set_expiry(60 * 60 * 24 * 14) # 设置过期时间
复制代码 使用中间件来做登岸状态的验证
- from django.utils.deprecation import MiddlewareMixinfrom web import modelsclass AuthMiddleware(MiddlewareMixin): def process_request(self, request): user_id = request.session.get('user_id', 0) # 通过session中生存的user_id查询到用户对象 user_obj = models.User.objects.filter(id=user_id).first() # 将用户对象赋值给request.login_user,模板中只需判断request.login_user即可 request.login_user = user_obj
复制代码 将写好的中间件注册在settings.py中
- MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'web.middlewares.auth.AuthMiddleware', # 登岸状态验证]
复制代码 模板中判断
- {% if request.login_user %} <li class="dropdown"> [url=https://www.jianchenwangluo.com/#]{{ request.login_user.username }}[/url]
- [list]
- [*][url=https://www.jianchenwangluo.com/#]管理中心[/url]
- [*]
- [*][url=https://www.jianchenwangluo.com/{% url 'logout' %}]退出[/url]
- [/list] {% else %} [url=https://www.jianchenwangluo.com/{% url 'login' %}]登录[/url]
- [url=https://www.jianchenwangluo.com/{% url 'register' %}]注册[/url]
- {% endif %}
复制代码 清空登岸状态
request.session.flush()
- def logout(request): request.session.flush() return redirect('index')
复制代码 来源:https://blog.csdn.net/weixin_43670190/article/details/111958864
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |