012 自定義使用者認證邏輯

2021-09-07 20:02:10 字數 4562 閱讀 1817

一:任務

1.任務

處理使用者資訊獲取邏輯

處理使用者校驗邏輯

處理密碼加密與解密

二: 獲取使用者資訊

1.說明

這個獲取使用者資訊的意思是什麼呢?

就是在登入介面,輸入使用者名稱,然後後台可以接收到,並且,可以自己到資料庫去查詢使用者的資訊了。

security接受使用者的介面如下:

2.程式

這裡沒有寫查詢程式,這裡這裡已經是spring中的乙個bean了,可以匯入dao了

1

package com.cao.security.browser;23

import org.slf4j.logger;

4import org.slf4j.logge***ctory;

5import org.springframework.security.core.authority.authorityutils;

6import org.springframework.security.core.userdetails.user;

7import org.springframework.security.core.userdetails.userdetails;

8import org.springframework.security.core.userdetails.userdetailsservice;

9import org.springframework.security.core.userdetails.usernamenotfoundexception;

10import org.springframework.stereotype.component;

11@component

12public

class

myuserdetailsservice implements userdetailsservice

2223 }

3.登入

控制台:

三:處理使用者校驗邏輯

1.校驗

密碼是否正確,密碼是否過期,賬戶是否被鎖定  等的校驗

userdetails:封裝了使用者登入所需要的所有資訊

2.程式

1

package

com.cao.security.browser;23

import

org.slf4j.logger;

4import

org.slf4j.logge***ctory;

5import

org.springframework.security.core.authority.authorityutils;

6import

org.springframework.security.core.userdetails.user;

7import

org.springframework.security.core.userdetails.userdetails;

8import

org.springframework.security.core.userdetails.userdetailsservice;

9import

org.springframework.security.core.userdetails.usernamenotfoundexception;

10import

org.springframework.stereotype.component;

11@component

12public

class myuserdetailsservice implements

userdetailsservice

3233 }

3.校驗

四:加密與解密

1.說明

使用的類是passwordencoder

encode:用於加密,建議在使用者註冊的時候,呼叫一次,對密碼進行加密。

matches:用於檢查加密的密碼與使用者的密碼是否匹配,是spring呼叫的

matches(charsequence rawpassword, string encodedpassword):rawpassword是原始的密碼,encodedpassword是加密的密碼

2.程式

使用的加密類

10* 覆蓋掉security原有的配置

11*

@author

dell12*

13*/

14@configuration

15public

class browsersecurityconfig extends

websecurityconfigureradapter

2728

@bean

29public

passwordencoder passwordencoder()

32 }

處理加密與解密

1

package

com.cao.security.browser;23

import

org.slf4j.logger;

4import

org.slf4j.logge***ctory;

5import

org.springframework.beans.factory.annotation.autowired;

6import

org.springframework.security.core.authority.authorityutils;

7import

org.springframework.security.core.userdetails.user;

8import

org.springframework.security.core.userdetails.userdetails;

9import

org.springframework.security.core.userdetails.userdetailsservice;

10import

org.springframework.security.core.userdetails.usernamenotfoundexception;

11import

org.springframework.security.crypto.password.passwordencoder;

12import

org.springframework.stereotype.component;

13@component

14public

class myuserdetailsservice implements

userdetailsservice

3940 }

3.效果

說明:每次使用者登入的時候,密碼被加密後都不一樣,但是解密後仍會是乙個密碼。

使用者認證自定義

設定郵箱和使用者名稱和手機號均可登入 authentication backends users.views.custombackend class custombackend modelbackend 自定義使用者驗證規則 defauthenticate self,username none pa...

django使用者認證系統 自定義認證後台8

django auth 應用預設支援使用者名稱 username 進行登入。但是在實踐中,可能還需要郵箱 手機號 身份證號等進行登入,這就需要我們自己寫乙個認證後台,用於驗證使用者輸入的使用者資訊是否正確,從而對擁有正確憑據的使用者進行登入認證。django 對使用者登入的驗證工作均在乙個被稱作認證...

使用者登入 html 自定義登入邏輯 013

當 進 行 自 定 義 登 錄 邏 輯 時 需 要 用 到 之 前 講 解 的 userdetailsservice 和 passwordencoder。但是 spring security 要求 當 進行自定義登入邏輯時容器內必須有 passwordencoder 例項。所以不 能直接 new 物...