當 進 行 自 定 義 登 錄 邏 輯 時 需 要 用 到 之 前 講 解 的
userdetailsservice 和 passwordencoder。但是 spring security 要求:當
進行自定義登入邏輯時容器內必須有 passwordencoder 例項。所以不
能直接 new 物件。
1 編寫配置類
新建類 com.bjsxt.config.securityconfig 編寫下面內容
@configuration
public class securityconfig
}
2 自定義邏輯
在 spring security 中實現 userdetailservice 就表示為使用者詳情服
務。在這個類中編寫使用者認證邏輯。
@service
public class userdetailsserviceimpl implements userdetailsservice
//把查詢出來的密碼進行解析,或直接把 password 放到構造方法中。
//理解:password 就是資料庫中查詢出來的密碼,查詢出來的內容不是 123
string password = encoder.encode("123");
return new user(username,password,
authorityutils.commaseparatedstringtoauthoritylist("admin"));
}}
3 檢視效果
重啟專案後,在瀏覽器中輸入賬號:admin,密碼:123。後可以
正確進入到 login.html 頁面。
六、 自定義登入頁面
雖然 spring security 給我們提供了登入頁面,但是對於實際專案
中,大多喜歡使用自己的登入頁面。所以 spring security 中不僅僅提
供了登入頁面,還支援使用者自定義登入頁面。實現過程也比較簡單,
只需要修改配置類即可。
1 編寫登入頁面
別寫登入頁面,登入頁面中
2 修改配置類
修改配置類中主要是設定哪個頁面是登入頁面。配置類需要繼承
websecurityconfigureradapte,並重寫 configure 方法。
successforwardurl()登入成功後跳轉位址
loginpage() 登入頁面
loginprocessingurl 登入頁面表單提交位址,此位址可以不真實存
在。antmatchers():匹配內容
permitall():允許
@configuration
public class securityconfig extends websecurityconfigureradapter
@bean
public passwordencoder getpe()
}
3 編寫控制器
編寫控制器,當使用者登入成功後跳轉 tomain 控制器。編寫完成
控制器後編寫 main.html。頁面中隨意寫上一句話表示 main.html 頁面
內容即可。而之前的/login 控制器方法是不執行的,所以可以刪除了。
@controller
public class logincontroller
public string tomain()
}
django 自定義登入驗證邏輯
本文的django view採用的是基於cbv的模式 django中的登入功能主要涉及到django.contrib.auth這個包,它提供了2個重要的函式 authenticate和login。這個函式接受的乙個收集引數,但至少需要接受username和password這兩個關鍵引數,它完成以下的...
django 自定義登入驗證邏輯
本文的django view採用的是基於cbv的模式 django中的登入功能主要涉及到django.contrib.auth這個包,它提供了2個重要的函式 authenticate和login。這個函式接受的乙個收集引數,但至少需要接受username和password這兩個關鍵引數,它完成以下的...
自定義登入成功和登入處理邏輯
要改變預設的登入成功處理邏輯,只要實現org.springframework.security.web.authentication.authenticationsuccesshandler的onauthenticationsuccess方法 component public class myaut...