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

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

Spring security實現對賬戶進行加密

瀏覽:77日期:2023-09-17 17:19:00

一、原理分析1.1加密原理

首先前端頁面發送注冊的賬戶信息到controller層,然后依次經過service層和dao層,最后入庫。其中對密碼的加密應該放在service層進行,加密后再入庫。

spring security中有一個加密類BCryptPasswordEncoder可以用來對密碼進行加密,調用其中的encode方法返回一個加密后的字符串

public String encode(CharSequence rawPassword) { String salt; if (strength > 0) { if (random != null) {salt = BCrypt.gensalt(strength, random); } else {salt = BCrypt.gensalt(strength); } } else { salt = BCrypt.gensalt(); } return BCrypt.hashpw(rawPassword.toString(), salt);}

使用時可以在spring的配置文件中配置一個加密類的bean,這樣在service中可以直接注入

加密后數據庫中存儲的是加密過后的字符串。

1.2加密后的登錄過程

對密碼進行加密后數據庫中存儲的是加密字符串,用戶發起登錄請求后,框架會使用相同的加密算法對前端傳遞的密碼進行加密并得到加密字符串,然后和數據庫中查詢到的字符串進行對比。

二、代碼實現

具體的工程代碼可以參考我的工程示例,下文中只給出了和添加用戶相關的部分。

在配置文件中配置加密類

<bean class='org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder'> </bean>

2.1添加用戶的頁面如下, register.html

<html> <head> <meta charset='UTF-8'> <title>注冊頁面</title> </head> <body> <form action='/user/add.do' method='post'> 用戶名:<input type='text' name='username' placeholder='請輸入用戶名'><br> 密 碼:<input type='password' name='password' placeholder='請輸入密碼'><br> <input type='submit' value='注冊'> </form> </body></html>

2.2controller層創建一個增加用戶的方法

@RestController@RequestMapping('/user')public class UserController { @Autowired private IUserService userService; @PostMapping('/add') public String add(UserInfo userInfo){ userService.add(userInfo); return 'success'; }}

2.3service層

@Autowiredprivate BCryptPasswordEncoder passwordEncoder;...//省略其他@Overridepublic void add(UserInfo userInfo) { //對密碼加密 userInfo.setPassword(passwordEncoder.encode(userInfo.getPassword())); userDao.add(userInfo);}

這里的passwordEncoder就是在配置文件中配置的加密bean,注入后可以直接使用

dao層這里就不再列舉了。

三、測試

啟動工程并成功登錄后,跳轉到首頁,

Spring security實現對賬戶進行加密

選擇注冊新賬號后跳轉到注冊頁面

Spring security實現對賬戶進行加密

輸入賬戶和密碼后注冊,會在數據庫中插入一條新的記錄。

Spring security實現對賬戶進行加密

這里我頁面上輸入的是 admin/admin,數據庫中存儲的password是加密后的

$2a$10$URSaaafrPOCjFYvhrhQbku2/l36IJ0zH0G8xeJzf5lAH2F1JJ1ybG

四、用加密后的賬號登錄

此時如果使用剛剛新建的這個賬號進行登錄就會登錄失敗。因為我們并沒有配置spring security認證時的加密方式,默認是不進行加密,所以會直接將前臺輸入的密碼和數據庫中的加密字符串進行比較。

要使用這個賬號登錄還需要進行如下配置

在spring security的配置文件中配置加密策略

<security:authentication-manager> <!--配置使用給定的userservice完成認證--> <security:authentication-provider user-service-ref='userService'> <security:password-encoder ref='passwordEncoder'/> </security:authentication-provider> </security:authentication-manager> <bean class='org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder'> </bean>

在userService的loadUserByUsername方法中去除密碼字符串上拼接的{noop}字符串,本來這個就是為了適配密碼未加密的情況

public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { UserInfo userInfo = userDao.findByUsername(username); User user=new User(userInfo.getUsername(),userInfo.getPassword(),getRoles()); return user;}

然后使用剛才注冊的 admin/admin就可以登錄成功了。

注意如果進行了上面兩部,數據庫中以前的賬戶將不能進行登錄了,因為數據庫中的密碼是沒有加密的,而框架會對前臺傳遞的密碼進行加密后再和數據庫中的比較。所以一定要記住上面新注冊的這個賬號admin/admin

這里我給出admin對應的加密字符串

$2a$10$URSaaafrPOCjFYvhrhQbku2/l36IJ0zH0G8xeJzf5lAH2F1JJ1ybG

如果大家忘記了剛才注冊的賬號,可以在數據庫中插入一條admin/admin的記錄。

五、總結

添加賬戶主要是需要用spring security自帶的加密類BCryptPasswordEncoder對用戶密碼進行加密。

要使用新注冊的賬戶登錄就需要在配置文件中配置加密策略

配置后原來的賬號因為密碼沒有加密將不能使用

六、示例工程源碼

示例工程已經上傳到碼云上,如果有需要歡迎大家參考

示例工程

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 工业淬火油烟净化器,北京油烟净化器厂家,热处理油烟净化器-北京众鑫百科 | TMT观察网_独特视角观察TMT行业| 磁力加热搅拌器-多工位|大功率|数显恒温磁力搅拌器-司乐仪器官网 | 防火阀、排烟防火阀、电动防火阀产品生产销售商-德州凯亿空调设备有限公司 | 对照品_中药对照品_标准品_对照药材_「格利普」高纯中药标准品厂家-成都格利普生物科技有限公司 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | ISO9001认证咨询_iso9001企业认证代理机构_14001|18001|16949|50430认证-艾世欧认证网 | 杭州公司变更法人-代理记账收费价格-公司注销代办_杭州福道财务管理咨询有限公司 | 全国国际学校排名_国际学校招生入学及学费-学校大全网 | 实体店商新零售|微赢|波后|波后合作|微赢集团 | 1000帧高速摄像机|工业高速相机厂家|科天健光电技术 | 电子元器件呆滞料_元器件临期库存清仓尾料_尾料优选现货采购处理交易商城 | 深圳宣传片制作-企业宣传视频制作-产品视频拍摄-产品动画制作-短视频拍摄制作公司 | 油冷式_微型_TDY电动滚筒_外装_外置式电动滚筒厂家-淄博秉泓机械有限公司 | 钢格栅板_钢格板网_格栅板-做专业的热镀锌钢格栅板厂家-安平县迎瑞丝网制造有限公司 | 专注氟塑料泵_衬氟泵_磁力泵_卧龙泵阀_化工泵专业品牌 - 梭川泵阀 | 机房监控|动环监控|动力环境监控系统方案产品定制厂家 - 迈世OMARA | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 专业甜品培训学校_广东糖水培训_奶茶培训_特色小吃培训_广州烘趣甜品培训机构 | 100国际学校招生 - 专业国际学校择校升学规划 | 字典-新华字典-在线字典查字-字典趣| 北京开源多邦科技发展有限公司官网 | 橡胶弹簧|复合弹簧|橡胶球|振动筛配件-新乡市永鑫橡胶厂 | 电子厂招聘_工厂招聘_普工招聘_小时工招聘信息平台-众立方招工网 | 东风体检车厂家_公共卫生体检车_医院体检车_移动体检车-锦沅科贸 | 车件|铜件|车削件|车床加工|五金冲压件-PIN针,精密车件定制专业厂商【东莞品晔】 | 伶俐嫂培训学校_月嫂培训班在哪里报名学费是多少_月嫂免费政府培训中心推荐 | 电动卫生级调节阀,电动防爆球阀,电动软密封蝶阀,气动高压球阀,气动对夹蝶阀,气动V型调节球阀-上海川沪阀门有限公司 | 无机纤维喷涂棉-喷涂棉施工工程-山东华泉建筑工程有限公司▲ | 河南包装袋厂家_河南真空袋批发价格_河南服装袋定制-恒源达包装制品 | 自动化展_机器人展_机床展_工业互联网展_广东佛山工博会 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 | 生态板-实木生态板-生态板厂家-源木原作生态板品牌-深圳市方舟木业有限公司 | 防渗土工膜|污水处理防渗膜|垃圾填埋场防渗膜-泰安佳路通工程材料有限公司 | 企业彩铃制作_移动、联通、电信集团彩铃上传开通_彩铃定制_商务彩铃管理平台-集团彩铃网 | 成都亚克力制品,PVC板,双色板雕刻加工,亚克力门牌,亚克力标牌,水晶字雕刻制作-零贰捌广告 | PCB厂|线路板厂|深圳线路板厂|软硬结合板厂|电路板生产厂家|线路板|深圳电路板厂家|铝基板厂家|深联电路-专业生产PCB研发制造 | 无纺布包装机|径向缠绕包装机|缠绕膜打包机-上海晏陵智能设备有限公司 | 博客-悦享汽车品质生活| 济南货架定做_仓储货架生产厂_重型货架厂_仓库货架批发_济南启力仓储设备有限公司 | 杭州中策电线|中策电缆|中策电线|杭州中策电缆|杭州中策电缆永通集团有限公司 | 电脑刺绣_绣花厂家_绣花章仔_织唛厂家-[源欣刺绣]潮牌刺绣打版定制绣花加工厂家 |