日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Spring Security 安全認(rèn)證的示例代碼

瀏覽:138日期:2023-08-08 10:39:42

1.1 動態(tài)用戶

1.1.1 放行資源

  如果我們再配置的時候沒有放行登錄頁等一些不需要登錄就可以看到的資源,那么訪問的時候就會全部攔截導(dǎo)致訪問不到。所以我們要配置放行一些無需登錄就可以看到的資源。

<?xml version='1.0' encoding='UTF-8'?><beans:beans xmlns='http://www.springframework.org/schema/security' xmlns:beans='http://www.springframework.org/schema/beans'xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd'> <!-- 設(shè)置頁面不登陸也可以訪問 --> <http pattern='/login.html' security='none'></http> <http pattern='/css/**' security='none'></http> <http pattern='/js/**' security='none'></http> <http pattern='/img/**' security='none'></http> <!-- 頁面的攔截規(guī)則 use-expressions:是否啟動 SPEL 表達(dá)式 默認(rèn)是 true --> <http use-expressions='false'> <!-- 當(dāng)前用戶必須有 ROLE_USER 的角色 才可以訪問根目錄及所屬子目錄的資源 --> <intercept-url pattern='/**' access='ROLE_USER'/> <!-- 開啟表單登陸功能 --> <form-login/> </http> <!-- 認(rèn)證管理器 --> <authentication-manager> <authentication-provider> <user-service> <!-- 配置靜態(tài)用戶 --><user name='admin' password='123456' authorities='ROLE_USER'/> </user-service> </authentication-provider> </authentication-manager></beans:beans>

1.1.2 動態(tài)用戶

  我們之前配置的都是再配置文件中靜態(tài)用戶,如果用戶更改就需要修改配置文件十分的不方便,這個時候我們就需要從數(shù)據(jù)庫中讀取用戶了。修改時直接修改數(shù)據(jù)庫就行了。

☞ 認(rèn)證類

/** * Created with IntelliJ IDEA. * * @author Demo_Null * @date 2020/10/12 * @description 認(rèn)證類 */public class UserDetailsServiceImpl implements UserDetailsService { public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException { // UserDetails 對象 UserDetails userDetails = null;// 構(gòu)建角色列表 List<GrantedAuthority> grantedAuths = new ArrayList<GrantedAuthority>(); grantedAuths.add(new SimpleGrantedAuthority('ROLE_SELLER')); // 根據(jù)用戶名獲取用戶 // 判斷用戶是否存在 if (Objects.equals('admin', s)) { // 構(gòu)建一個 User 返回,Security 會自動核驗密碼 userDetails = new User('admin','123456', grantedAuths); } return userDetails; }}

☞ 認(rèn)證管理器

<!-- 認(rèn)證管理器 --><authentication-manager> <authentication-provider user-service-ref='userDetailService'></authentication-provider></authentication-manager><beans:bean class='com.software.controller.UserDetailsServiceImpl'></beans:bean>

1.2 加密

1.2.1 BCrypt 加密算法

 用戶表的密碼通常使用 MD5 等不可逆算法加密后存儲,為防止彩虹表破解更會先使用一個特定的字符串加密,然后再使用一個隨機的 salt(鹽值) 加密。 特定字符串是程序代碼中固定的,salt 是每個密碼單獨隨機,一般給用戶表加一個字段單獨存儲,比較麻煩。 BCrypt 算法將 salt 隨機并混入最終加密后的密碼,驗證時也無需單獨提供之前的 salt,從而無需單獨處理 salt 問題。

☞ 配置加密

<!-- 認(rèn)證管理器 --><authentication-manager> <authentication-provider user-service-ref='userDetailService'> <password-encoder ref='passwordEncoder'></password-encoder> </authentication-provider></authentication-manager><beans:bean class='com.software.controller.UserDetailsServiceImpl'></beans:bean><!-- 定義 spring security 安全加密算法對象 --><beans:bean class='org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder'></beans:bean>

☞ 加密

/** * Created with IntelliJ IDEA. * * @author Demo_Null * @date 2020/10/12 * @description BCrypt 加密 */public class UserDetailsServiceImpl implements UserDetailsService { public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException { // UserDetails 對象 UserDetails userDetails = null; // 構(gòu)建角色列表 List<GrantedAuthority> grantedAuths = new ArrayList<GrantedAuthority>(); grantedAuths.add(new SimpleGrantedAuthority('ROLE_SELLER')); // 根據(jù)用戶名獲取用戶 // 判斷用戶是否存在 if (Objects.equals('admin', s)) { // 模擬密碼已加密 BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder(); String encode = bCryptPasswordEncoder.encode('123456'); // 構(gòu)建一個 User 返回,Security 會自動核驗密碼 userDetails = new User('admin',encode, grantedAuths); } return userDetails; }}

1.2.2 自定義加密算法

☞ 自定義加密算法

/** * Created with IntelliJ IDEA. * * @author Demo_Null * @date 2020/10/12 * @description 加密工具類 */ public class MD5Util { private static final String SALT = 'Demo_Null'; public static String encode(String password) { password = password + SALT; MessageDigest md5 = null; try { md5 = MessageDigest.getInstance('MD5'); } catch (Exception e) { throw new RuntimeException(e); } char[] charArray = password.toCharArray(); byte[] byteArray = new byte[charArray.length]; for (int i = 0; i < charArray.length; i++) byteArray[i] = (byte) charArray[i]; byte[] md5Bytes = md5.digest(byteArray); StringBuffer hexValue = new StringBuffer(); for (int i = 0; i < md5Bytes.length; i++) { int val = ((int) md5Bytes[i]) & 0xff; if (val < 16) {hexValue.append('0'); } hexValue.append(Integer.toHexString(val)); } return hexValue.toString(); }}

☞ 自定義加密

/** * Created with IntelliJ IDEA. * * @author Demo_Null * @date 2020/10/12 * @description 自定義加密算法 */public class MyPasswordEncoder implements PasswordEncoder { @Override public String encode(CharSequence charSequence) { return MD5Util.encode((String)charSequence); } @Override public boolean matches(CharSequence charSequence, String s) { return s.equals(MD5Util.encode((String)charSequence)); }}

☞ 修改安全加密算法對象

<!-- 認(rèn)證管理器 --> <authentication-manager> <authentication-provider user-service-ref='userDetailService'> <password-encoder ref='passwordEncoder'></password-encoder> </authentication-provider> </authentication-manager> <beans:bean class='com.software.controller.UserDetailsServiceImpl'></beans:bean> <!-- 定義 spring security 安全加密算法對象 --> <beans:bean class='com.software.controller.MyPasswordEncoder'></beans:bean>

到此這篇關(guān)于Spring Security 安全認(rèn)證的示例代碼的文章就介紹到這了,更多相關(guān)Spring Security 安全認(rèn)證內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品国产一区二区三区2021| 色综合视频一区二区三区日韩 | 麻豆精品在线观看| 欧美成人综合| 国产高清不卡| 国产精品蜜芽在线观看| 免费在线欧美黄色| 国产精品99久久免费观看| 亚洲久久视频| 天堂精品久久久久| 日韩欧美中文字幕一区二区三区 | 精品无人区麻豆乱码久久久 | 91成人小视频| 免费在线观看日韩欧美| 亚洲一二三区视频| 婷婷五月色综合香五月| 综合一区在线| 久久精品xxxxx| 日本a口亚洲| 国产精品国产三级在线观看| 欧美国产免费| 亚洲成av在线| 日韩中文字幕亚洲一区二区va在线| 日韩精品一级中文字幕精品视频免费观看 | 好看不卡的中文字幕| 亚洲网站视频| 日韩中文字幕av电影| 日本成人手机在线| 欧美在线日韩| 中国字幕a在线看韩国电影| 中文在线а√天堂| 少妇久久久久| 先锋影音久久久| 国产日韩一区二区三区在线| 国产一区三区在线播放| 婷婷成人在线| 日本不卡一区二区三区| 久久亚州av| 免费看精品久久片| 国产一区三区在线播放| 亚洲毛片在线免费| 精品午夜av| 亚洲视频二区| 性欧美xxxx免费岛国不卡电影| 日本免费一区二区视频| 久久麻豆精品| 美女视频网站久久| 国产字幕视频一区二区| 久久xxxx精品视频| 麻豆成人91精品二区三区| 欧美sss在线视频| 亚洲综合婷婷| 高清av一区| 日韩精品久久久久久久软件91| 国产成人精品一区二区免费看京| 日韩免费福利视频| 中文一区在线| 国产精品亚洲片在线播放| 日韩毛片视频| 亚洲男女自偷自拍| 激情综合婷婷| 日韩精品一区二区三区免费视频| 成人免费一区| 日韩三区四区| 欧美a级片一区| 精品中文字幕一区二区三区四区| 美女国产精品| 国产精品99精品一区二区三区∴| 国产综合婷婷| 久久精品国产网站| 综合色一区二区| 九九综合九九| 国产精品亚洲片在线播放| 欧美+日本+国产+在线a∨观看| 国产精品v亚洲精品v日韩精品| 午夜欧美在线| 亚洲va在线| 精品欧美日韩精品| 日韩1区2区日韩1区2区| 麻豆9191精品国产| 九一成人免费视频| 色一区二区三区四区| 国产日韩欧美在线播放不卡| 亚洲一区免费| 丝袜美腿亚洲一区| 亚洲在线观看| 三级在线观看一区二区| 亚洲天堂一区二区| 成人在线免费观看91| 国产精品sss在线观看av| 国产亚洲亚洲| 天堂成人免费av电影一区| 99精品视频在线观看免费播放| 久久免费影院| 精品一区二区三区免费看| 国产免费播放一区二区| 国产精品日本一区二区不卡视频| 欧美一区=区三区| 日韩中文字幕一区二区高清99| 天堂久久av| 天堂av一区| 久久成人高清| 日韩1区2区日韩1区2区| 久久久精品区| 日韩高清中文字幕一区| 日韩不卡在线观看日韩不卡视频| 日韩福利视频导航| 国产精品99久久免费| 都市激情国产精品| 久久国产电影| 亚洲综合福利| 国产精品调教| 久久精品国语| 日韩精品亚洲专区在线观看| 国产精品三p一区二区| 日韩欧美不卡| 一区在线免费| 亚洲人妖在线| 精品一区二区三区免费看| 午夜国产一区二区| 国产乱人伦精品一区| 精品视频一区二区三区在线观看| 欧美日韩一区二区三区视频播放| 视频一区欧美精品| 久久精品一区| 亚洲九九精品| 日韩欧美一区二区三区免费看| 视频在线观看91| 天堂精品久久久久| 日韩免费视频| 日韩国产精品久久久| 久久九九精品| 欧美亚洲专区| 日韩午夜在线| 色偷偷色偷偷色偷偷在线视频| 夜夜精品视频| 久久久久久网| 国产精品久久久久毛片大屁完整版| 久久久国产精品一区二区中文| 日韩av一二三| 丝袜美腿一区二区三区| 久久精品亚洲欧美日韩精品中文字幕| 日本视频一区二区| 成年男女免费视频网站不卡| 国产伦精品一区二区三区在线播放| 97国产精品| 麻豆精品视频在线| 日本大胆欧美人术艺术动态| 日韩国产一区二区| 国产福利亚洲| 精品欧美日韩精品| 青青草国产成人99久久| 一区二区国产在线观看| 亚洲一区欧美二区| 国产精品普通话对白| 久久国产中文字幕| 丝袜美腿诱惑一区二区三区| 国产a亚洲精品| 另类欧美日韩国产在线| 国产激情久久| 精品一区二区三区在线观看视频| 久久99影视| 另类综合日韩欧美亚洲| 国产经典一区| 国产日本精品| 国产精品午夜av| 国产91在线精品| 欧美69视频| 蜜乳av另类精品一区二区| 亚洲一区二区三区四区电影 | 欧美视频一区| 国产精品久久久一区二区| 国产精品99久久久久久董美香| 国产一区二区精品久| 国产成人77亚洲精品www| 性感美女一区二区在线观看| 黄色免费成人| 亚洲欧洲美洲国产香蕉| 日韩和欧美一区二区| 久久亚洲资源中文字| 美女少妇全过程你懂的久久| 五月婷婷六月综合| 国产情侣一区| 久久精品凹凸全集| 亚洲精品裸体| 久久一区二区三区电影| 日本午夜精品久久久久| 激情欧美一区| 波多视频一区| 91精品国产经典在线观看| 狠狠久久婷婷| 亚洲一级网站| 久久久久欧美精品| 亚洲成a人片| 视频在线不卡免费观看| 久久av网址| 国产精品任我爽爆在线播放 | 亚洲综合不卡| 另类中文字幕国产精品| 免费在线日韩av|