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

您的位置:首頁技術文章
文章詳情頁

Spring Security 安全認證的示例代碼

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

1.1 動態用戶

1.1.1 放行資源

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

<?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'> <!-- 設置頁面不登陸也可以訪問 --> <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> <!-- 頁面的攔截規則 use-expressions:是否啟動 SPEL 表達式 默認是 true --> <http use-expressions='false'> <!-- 當前用戶必須有 ROLE_USER 的角色 才可以訪問根目錄及所屬子目錄的資源 --> <intercept-url pattern='/**' access='ROLE_USER'/> <!-- 開啟表單登陸功能 --> <form-login/> </http> <!-- 認證管理器 --> <authentication-manager> <authentication-provider> <user-service> <!-- 配置靜態用戶 --><user name='admin' password='123456' authorities='ROLE_USER'/> </user-service> </authentication-provider> </authentication-manager></beans:beans>

1.1.2 動態用戶

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

☞ 認證類

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

☞ 認證管理器

<!-- 認證管理器 --><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 問題。

☞ 配置加密

<!-- 認證管理器 --><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; // 構建角色列表 List<GrantedAuthority> grantedAuths = new ArrayList<GrantedAuthority>(); grantedAuths.add(new SimpleGrantedAuthority('ROLE_SELLER')); // 根據用戶名獲取用戶 // 判斷用戶是否存在 if (Objects.equals('admin', s)) { // 模擬密碼已加密 BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder(); String encode = bCryptPasswordEncoder.encode('123456'); // 構建一個 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)); }}

☞ 修改安全加密算法對象

<!-- 認證管理器 --> <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>

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

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产日韩一区二区三区在线播放 | 亚洲专区欧美专区| 麻豆国产精品一区二区三区| 国产亚洲人成a在线v网站| 欧美一级二级三级视频| 欧美日本不卡高清| 国产欧美日韩在线观看视频| 日韩高清一区| 欧美国产极品| 国产精品高颜值在线观看| 国语对白精品一区二区| 久久久精品久久久久久96| 日韩视频中文| 日韩国产欧美在线播放| 国产欧美日韩精品高清二区综合区| 午夜免费一区| 丝袜美腿亚洲一区二区图片| 婷婷精品在线| 国产探花在线精品| 免费一二一二在线视频| 亚洲狼人精品一区二区三区| 麻豆久久一区| 亚洲精品一级二级| 亚洲精品系列| 老司机精品视频在线播放| 日韩视频网站在线观看| 1024精品久久久久久久久| 免费黄网站欧美| 亚洲综合在线电影| 欧美日韩99| 国产aⅴ精品一区二区四区| 欧美少妇精品| 欧美亚洲色图校园春色| 亚洲福利精品| 一区二区国产在线观看| 色乱码一区二区三区网站| 日本亚州欧洲精品不卡| 不卡一区2区| 91日韩欧美| 亚洲区欧美区| 亚洲人成在线网站| 国产精品115| 国产一级久久| 成人午夜国产| 日本欧美国产| 伊人久久婷婷| 成人在线黄色| 国产精品一二| 久久国产尿小便嘘嘘| 在线看片不卡| 欧美极品一区二区三区| 欧美一区成人| 亚洲精品乱码久久久久久蜜桃麻豆 | 久久久久久婷| 国产精品红桃| 日韩欧美高清一区二区三区| 日韩在线观看一区| 欧美欧美黄在线二区| 黄色日韩精品| 日韩中文影院| 国产亚洲欧美日韩精品一区二区三区 | 老牛国内精品亚洲成av人片| 亚洲va久久| 视频在线在亚洲| 香蕉久久久久久久av网站| 影视先锋久久| 久久人人97超碰国产公开结果| 日韩欧美午夜| 欧美亚洲国产一区| www.com.cn成人| 国产在线|日韩| 欧美黄色网页| 图片区亚洲欧美小说区| 99精品电影| 亚洲大全视频| 免费精品视频| 爽好多水快深点欧美视频| 99久久99久久精品国产片果冰| 三级在线看中文字幕完整版| 一区免费在线| 国产精品一区二区三区www| 久久这里只有| 韩国精品主播一区二区在线观看 | 久久久精品日韩| 亚洲黑丝一区二区| 在线成人直播| 欧美片第1页综合| 欧美成人精品一级| 麻豆一区二区在线| 日本精品不卡| 欧美专区18| 精品中文在线| 99在线|亚洲一区二区| 黄色亚洲精品| 91伊人久久| 美女视频黄久久| 日韩在线播放一区二区| 美女视频免费精品| 免费精品视频| 久久激情五月激情| 亚洲精品一区二区在线看| 亚洲精品在线二区| 日韩在线视频精品| 国产精品久久久亚洲一区| 日韩精品诱惑一区?区三区| 久久精品xxxxx| 亚洲高清成人| 国产精品久久国产愉拍| yellow在线观看网址| 亚洲欧洲午夜| 日韩精品午夜| 精品视频在线一区二区在线| 一区二区三区国产在线| 久久免费大视频| 福利视频一区| 欧美一区二区三区久久精品| 伊人久久亚洲影院| 热三久草你在线| 国产成人免费| 国产日韩亚洲| 四虎国产精品免费久久| 欧美日韩国产亚洲一区| 少妇久久久久| 国产精品成人自拍| 鲁大师影院一区二区三区| 精品捆绑调教一区二区三区| 精品亚洲免a| 青青草91视频| 日韩一区免费| 中文一区一区三区免费在线观 | 美女毛片一区二区三区四区最新中文字幕亚洲 | 香蕉久久国产| 亚洲女同中文字幕| 欧美色图一区| 欧美+亚洲+精品+三区| 国产高清不卡| 91嫩草亚洲精品| 美女久久久久| 尹人成人综合网| 久久中文亚洲字幕| 爽爽淫人综合网网站| 久久最新视频| 一区二区三区四区日韩| 国产日韩免费| 动漫av一区| 精品高清久久| 99久久精品费精品国产| 天堂中文在线播放| 91精品在线观看国产| aa亚洲婷婷| 蜜桃视频免费观看一区| 久久国产人妖系列| 97精品97| 尹人成人综合网| 亚洲精品影视| 日韩一区二区三区高清在线观看| 亚洲精品福利| 日韩欧美中文| 亚洲欧洲av| 欧美中文一区二区| 午夜在线一区二区| 亚洲+小说+欧美+激情+另类| 国精品产品一区| 午夜久久一区| 成人影视亚洲图片在线| 综合一区av| 亚洲a在线视频| 国产精品永久| 99国产精品久久久久久久 | 成人自拍av| 久久av一区| www在线观看黄色| 91福利精品在线观看| 欧美日韩中文一区二区| 久久不见久久见免费视频7| 免费欧美一区| 精品久久一区| 免费在线观看成人| 久久精品国产亚洲aⅴ| 国产综合婷婷| 国产乱码午夜在线视频| 久久久91麻豆精品国产一区| 日韩大片在线观看| 激情91久久| 岛国精品一区| 久久精品人人| 欧美国产另类| 老色鬼精品视频在线观看播放| 日本不卡视频在线| 亚洲免费观看高清完整版在线观| 亚洲先锋成人| 日韩精品一卡| 电影亚洲精品噜噜在线观看| 六月婷婷综合| 成人在线视频免费看| 国产探花一区| 欧美极品中文字幕| 一区二区精品| 六月婷婷一区| 老司机精品久久|