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

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

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

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 Android STD快速启动
  • ¥15 如何使用simulink建立一个永磁同步直线电机模型?
  • ¥30 天体光谱图的的绘制并得到星表
  • ¥15 PointNet++的onnx模型只能使用一次
  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动