fanfanacs 2023-03-08 14:14 采纳率: 100%
浏览 42
已结题

想实现在关闭页面之后账户自动登出的功能

制作了一个网页登录的功能,想实现在关闭页面之后账户自动登出的功能或者一段时间后自动登出也可以,却不知道怎么做

middlewarfe中的代码是这样的

urllist2 = ['/web/login', '/web/logout', '/web/dologin']
        if re.match(r'^/web',path)and (path not in urllist2):
            #判断是否登录(在于session中没有adminuser)
            if 'adminuser' not in request.session:
                #重定向到登录页
                return redirect(reverse("web_login"))

index的代码是这样的

def index(request):
    ''' 项目前段,企业搜索'''
    return redirect(reverse("web_index"))

def webindex(request):
    ''' 项目前段,企业搜索'''
    return render(request,"web/index.html")
#管理员登录表单
def login(request):
    return render(request,'web/login.html')

#执行管理员登录
def dologin(request):
    try:
        #根据登录账号获取登  录者信息
        user = User.objects.get(username=request.POST['username'])
        #判断当前用户是否是管理员
        if user.status == 1:
            #判断登录密码是否相同
            import hashlib
            md5 = hashlib.md5()
            s = request.POST['pass']+user.password_salt #从表单中获取密码并添加干扰值
            md5.update(s.encode('utf-8')) #将要产生md5的子串放进去
            if user.password_hash == md5.hexdigest(): #获取md5值
                print('登录成功')
                #将当前登录成功的用户信息以adminuser为key写入到session中
                request.session['adminuser'] = user.toDict()
                #重定向到后台管理首页
                return redirect(reverse("web_index"))
            else:
                context = {"info":"登录密码错误!"}
        else:
            context = {"info":"无效的登录账号!"}
    except Exception as err:
        print(err)
        context = {"info":"登录账号不存在"}
    return render(request,"web/index.html",context)

#管理员退出
def logout(request):
    del request.session['adminuser']
    return redirect(reverse("myadmin_login"))

url是这样的

    path('login', index.login, name="web_login"), #加载登录表单
    path('dologin', index.dologin, name="web_dologin"), #执行登录
    path('logout', index.logout, name="web_logout"), #退出

    path("web/", include([
        path('', index.webindex, name = 'web_index'),
    ])),
想问问看自动登出该如何做
  • 写回答

4条回答 默认 最新

  • 阳光宅男xxb 2023-03-08 14:20
    关注

    再setting.py中配置如下参数即可:
    SESSION_COOKIE_AGE = 60*30#设置session过期时间为30分钟
    SESSION_EXPIRE_AT_BROWSER_CLOSE = True#当浏览器被关闭的时候将session失效,但是不能删除数据库的session数据
    SESSION_SAVE_EVERY_REQUEST = True#每次请求都要保存一下session

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月16日
  • 已采纳回答 3月8日
  • 创建了问题 3月8日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么