auth模塊(登錄驗證)


settings:
'django.contrib.auth.middleware.AuthenticationMiddleware',

#這個是認證的中間件,認證成功的話,就可以把這個用戶user封裝到request里面,下次過來的話就可以直接帶着這個cookies過來
 
        
from django.contrib.auth import authenticate,login
from django.contrib import auth

from django.contrib.auth.models import User

#這個可以拿到這個django自帶的User的表,這個是django自己的用戶認證的表(創建超級用戶和普通用戶的表)



from  django.shortcuts import  render,HttpResponse,redirect
#加了一個裝飾器模塊



def  login(request):
    print('進行認證')
    if  request.method=='POST':
        username = request.POST.get('username')
        passwd = request.POST.get('passwd')
        user = auth.authenticate(username=username, password=passwd)
#假如這個驗證成功的話,這個user就有值,就可以進行登錄
        auth.login(request, user)####這個依賴於session,將驗證過的用戶賦值給request.user屬性
#這個是把這個user封裝進這個requets里面,下面既可以直接進行調用了,通過requets.user進行調用,進行登錄驗證
        '''
        原理講解:
        這個是將這個user封裝進這個request里面,就是將這個user和密碼寫進這個sessions里面,下次過來的時候就可以直接進行訪問了,帶着這個cookies進行匹配
        
        '''
        if user:
            return redirect('/index/')
        else:

            return   render(request, 'login.html')

#加了裝飾器的話,不知道要跳轉到那個頁面,所以要先在settings里面加上這個路勁,指定要跳轉的頁面
'''
原理講解:
當要到這個index的頁面的話,加了裝飾器的話,就可以指定跳轉到那個頁面,在settings里面加了一個login_url的路勁
這個當訪問這個index的url的時候,就會跳轉到這個login的頁面,然后登陸成功的話,就可以到這個index的頁面
settings里面的配置:

#配置這個url,如果沒有登陸成功的話,就跳轉到那個頁面
LOGIN_URL="/login/"
'''


@login_required
def index(request):
print('進入這個首頁的頁面')
ret=request.user.is_authenticated()
    ###這個是判斷是否是這個用戶已經注冊過的
print(request.user.username)
#這個是已經封裝到requets的模塊里面了,所以可以直接進行調用,在這個request里面有這個user,可以直接進行調用里面的user




def logout(request):
print('注銷')
auth.logout(request)
#這個相當於把這個requets里面的user給清除掉,清除掉session_id,注銷掉用戶

#request.session.flush()
#將session的數據都刪除,並且cookies也失效

return redirect('/login/')



def register(request):
print('注冊')
user_obj=User.objetcs.create(usernmae='yuxin',password='12')
ret=user_obj.check_password('23443')
#這個是驗證密碼,注冊的時候進行的二次的驗證
print(ret)
#修改密碼
user_obj.set_password('addsds')
#這個是重新設置這個密碼
user_obj.save()
#保存這個密碼
return HttpResponse('ok')



原理講解:

這個相當於在session里面記錄一個session_id
request.session['user_id']=user[0].id
生成特殊的字符串
特殊字符串生成key的時候,在數據庫里面對應一個session_value
在響應的向這個寫了一個cookies,cookies的值就是這個特殊的字符串

 

 

在這個session里面拿到這個user_id
user_obj=request.session.get('user_id')
拿到這個user_id,在已經寫進這個session里面的用戶拿到這個user_id

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM