电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

Spring Security 安全認證的示例代碼

瀏覽:77日期: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
相關文章:
主站蜘蛛池模板: 护栏打桩机-打桩机厂家-恒新重工 | 纯化水设备-纯水设备-超纯水设备-[大鹏水处理]纯水设备一站式服务商-东莞市大鹏水处理科技有限公司 | SDI车窗夹力测试仪-KEMKRAFT方向盘测试仪-上海爱泽工业设备有限公司 | 陕西安闸机-伸缩门-车牌识别-广告道闸——捷申达门业科技 | 专业生物有机肥造粒机,粉状有机肥生产线,槽式翻堆机厂家-郑州华之强重工科技有限公司 | 博医通医疗器械互联网供应链服务平台_博医通 | 找培训机构_找学习课程_励普教育| 网站建设-高端品牌网站设计制作一站式定制_杭州APP/微信小程序开发运营-鼎易科技 | 辊道窑炉,辊道窑炉厂家-山东艾希尔 | 搅拌磨|搅拌球磨机|循环磨|循环球磨机-无锡市少宏粉体科技有限公司 | 扬子叉车厂家_升降平台_电动搬运车|堆高车-扬子仓储叉车官网 | 硬度计,金相磨抛机_厂家-莱州华煜众信试验仪器有限公司 | 塑胶地板-商用PVC地板-pvc地板革-安耐宝pvc塑胶地板厂家 | 重庆轻质隔墙板-重庆安吉升科技有限公司| 锂电池砂磨机|石墨烯砂磨机|碳纳米管砂磨机-常州市奥能达机械设备有限公司 | 四川实木门_成都实木门 - 蓬溪聚成门业有限公司| 北京普辉律师事务所官网_北京律师24小时免费咨询|法律咨询 | 数控走心机-双主轴走心机厂家-南京建克 | 股指期货-期货开户-交易手续费佣金加1分-保证金低-期货公司排名靠前-万利信息开户 | 网站优化公司_SEO优化_北京关键词百度快速排名-智恒博网络 | 南京展台搭建-南京展会设计-南京展览设计公司-南京展厅展示设计-南京汇雅展览工程有限公司 | 工装定制/做厂家/公司_工装订做/制价格/费用-北京圣达信工装 | 股票入门基础知识_股票知识_股票投资大师_格雷厄姆网 | 齿轮减速马达一体式_蜗轮蜗杆减速机配电机-德国BOSERL齿轮减速电动机生产厂家 | 喷漆房_废气处理设备-湖北天地鑫环保设备有限公司 | 杭州顺源过滤机械有限公司官网-压滤机_板框压滤机_厢式隔膜压滤机厂家 | 原子吸收设备-国产分光光度计-光谱分光光度计-上海光谱仪器有限公司 | 酸度计_PH计_特斯拉计-西安云仪 纯水电导率测定仪-万用气体检测仪-低钠测定仪-米沃奇科技(北京)有限公司www.milwaukeeinst.cn | 不锈钢酒柜|恒温酒柜|酒柜定制|酒窖定制-上海啸瑞实业有限公司 | 小型UV打印机-UV平板打印机-大型uv打印机-UV打印机源头厂家 |松普集团 | 郑州外墙清洗_郑州玻璃幕墙清洗_郑州开荒保洁-河南三恒清洗服务有限公司 | 湖北省煤炭供应链综合服务平台 | 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 金属波纹补偿器厂家_不锈钢膨胀节价格_非金属伸缩节定制-庆达补偿器 | 房在线-免费房产管理系统软件-二手房中介房屋房源管理系统软件 | 重庆钣金加工厂家首页-专业定做监控电视墙_操作台 | 定硫仪,量热仪,工业分析仪,马弗炉,煤炭化验设备厂家,煤质化验仪器,焦炭化验设备鹤壁大德煤质工业分析仪,氟氯测定仪 | 热缩管切管机-超声波切带机-织带切带机-无纺布切布机-深圳市宸兴业科技有限公司 | 电采暖锅炉_超低温空气源热泵_空气源热水器-鑫鲁禹电锅炉空气能热泵厂家 | 减速机电机一体机_带电机减速器一套_德国BOSERL电动机与减速箱生产厂家 | 板式换热器_板式换热器价格_管式换热器厂家-青岛康景辉 |