请选择 进入手机版 | 继续访问电脑版

Django登陆状态保存以及退出登陆状态

[复制链接]
云韵 发表于 2020-12-31 18:07:55 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
Day 20/12/30


用户登岸状态生存
在登岸乐成后使用session,将用户id写入到session中
  1. request.session['user_id'] = user_obj.pkrequest.session.set_expiry(60 * 60 * 24 * 14)  # 设置过期时间
复制代码
使用中间件来做登岸状态的验证
  1. 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中
  1. 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',   # 登岸状态验证]
复制代码
模板中判断
  1. {% if request.login_user %}        <li class="dropdown">        [url=https://www.jianchenwangluo.com/#]{{ request.login_user.username }}[/url]        
  2. [list]            
  3. [*][url=https://www.jianchenwangluo.com/#]管理中心[/url]            
  4. [*]            
  5. [*][url=https://www.jianchenwangluo.com/{% url &#39;logout&#39; %}]退出[/url]        
  6. [/list]    {% else %}    [url=https://www.jianchenwangluo.com/{% url &#39;login&#39; %}]登录[/url]
  7.     [url=https://www.jianchenwangluo.com/{% url &#39;register&#39; %}]注册[/url]
  8. {% endif %}
复制代码
清空登岸状态
request.session.flush()
  1. def logout(request):    request.session.flush()    return redirect(&#39;index&#39;)
复制代码
来源:https://blog.csdn.net/weixin_43670190/article/details/111958864
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )