zoukankan      html  css  js  c++  java
  • django session实现登陆验证

    实现用户的登录

    在view中

    def login(request):  
        if request.method=='GET':  
            return render(request,'login.html')  
        else:  
            name=request.POST.get('name')  
            pwd=request.POST.get('pwd')  
            user = User.objects.filter(username=name, password=pwd).first()  
            if user:  
                request.session['name']=user.username   
                return redirect('/account/index')  
            else:  
                return render(request,'login.html',{'msg':"用户名/密码错误"})

    其中的 request.session['name']=user.username 执行了一下几步:

    1.生成随机的sessionID字符串

    2.将sessionID和用户的信息在数据库中保存为一个键值对

    3.通过cookie将sessionID保存在客户端上

    这时候通过用户再次向服务器发送请求时服务器就可以通过请求中的sessionID判断用户的信息了,从而达到保存登录状态的要求。

    实现用户的注销

    在view中

    def logout(request):
        del request.session['name']
    return redirect('/account/index')

    用户注销其实就是删除客户端的sessionID在服务器中保存的状态,所以一句简单的del request.session['name']就可以达到我们的要求

    session注销

    # 注销
    def logout(request):
    # 删除Session
      request.session.flush()
    return redirect("/login/")

    设置cookie的方法

    rep = redirect("/home/")  # 将响应保存在一个变量     

    # 设置Cookie ---> 在返回的响应中告诉浏览器保存一个字符串 # --->>rep.set_cookie("login", 's12', max_age=5) # 设置明文的cookie rep.set_signed_cookie("login", "s12", salt="ooxxoo", max_age=60 * 60 * 24 * 7) # 设置加盐的Cookie

    获取cookie

    #---->> request.COOKIES.get("login", "") == "s12": # 获取默认的未加密的cookie
    request.get_signed_cookie("login", default="", salt='ooxxoo') == "s12": # 获取加密的cookie
     
  • 相关阅读:
    dockor 在windows的安装步骤
    go gin框架安装流程
    go 引入包之后没有起作用
    go get github.com/gin-gonic/gin 下载失败
    group 与having使用例子
    php把服务器上的资源下载并保存本地
    mysql 自我连接表
    laravel 队列的简单例子
    rem和em,px的使用
    带进度条的自动跳转页面代码
  • 原文地址:https://www.cnblogs.com/sunshine171/p/9445588.html
Copyright © 2011-2022 走看看