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
 
原文地址:https://www.cnblogs.com/sunshine171/p/9445588.html