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

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

Spring security實現對賬戶進行加密

瀏覽:152日期: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
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久精品二区三区| 激情不卡一区二区三区视频在线| 国产精品综合| 免费一区二区视频| 欧美日一区二区三区在线观看国产免 | 国产精品日韩久久久| 妖精视频成人观看www| 午夜在线视频观看日韩17c| 亚洲丝袜美腿一区| 精品国产精品国产偷麻豆 | 99xxxx成人网| 欧美一级久久| 成人精品久久| 最新亚洲激情| 国产日韩一区二区三免费高清| 国产精品久久久久久模特| 福利精品一区| 蜜臀av亚洲一区中文字幕| 麻豆91精品91久久久的内涵| 欧美中文一区二区| 91精品啪在线观看国产爱臀| 97视频热人人精品免费| 美女国产一区| 久久毛片亚洲| 99成人在线| 精品视频97| 日本免费一区二区视频| 亚洲涩涩在线| 日本欧美一区二区在线观看| 国产盗摄——sm在线视频| 亚洲激情国产| 日韩国产在线| 国产精品日韩精品中文字幕| 不卡中文一二三区| 红杏一区二区三区| 亚洲另类av| 国产综合视频| 97精品一区二区| 国产免费av一区二区三区| 亚洲网站视频| 日本在线高清| 美女免费视频一区| 欧美一区成人| 一级欧美视频| 亚洲专区一区| 欧美/亚洲一区| 黄色精品视频| 美女久久99| 欧美激情久久久久久久久久久| 色综合视频一区二区三区日韩 | 99国内精品| 久久久久国产| 免费看av不卡| 精品捆绑调教一区二区三区| 精品中文在线| 欧美国产免费| 久久久国产精品网站| 国产精品亚洲综合久久| 欧美综合精品| 久久国产生活片100| 日韩一区网站| 日韩国产欧美视频| 国产高清视频一区二区| 国产精品资源| 大香伊人久久精品一区二区| 国产一区调教| 欧美一区二区三区高清视频| 婷婷中文字幕一区| 偷拍亚洲精品| 久久精品免费看| 日韩精品一区二区三区免费观影 | 亚洲日产国产精品| 国产精品激情电影| 国产 日韩 欧美一区| 欧美日韩视频一区二区三区| 亚洲图片久久| 国产精品永久| 91精品精品| 蜜桃久久精品一区二区| 国产乱码精品一区二区亚洲| 日韩高清成人| 日本亚洲欧美天堂免费| 国产中文欧美日韩在线| 日韩综合精品| 亚洲毛片一区| 亚洲综合电影| 婷婷五月色综合香五月| 不卡福利视频| 亚洲精品韩国| 久久精品1区| 日韩欧美美女在线观看| 国产91在线精品| 影音先锋久久精品| 中文字幕在线高清| 日韩影片在线观看| 日韩理论片av| 国产精品欧美三级在线观看| 91九色精品| 国产成人在线中文字幕| 欧美精品自拍| 日韩大片在线观看| 久久精品99久久久| 国产亚洲综合精品| 日韩伦理一区| 久久99国产精品视频| 视频一区免费在线观看| 欧洲精品一区二区三区| 国产极品一区| 欧美一区二区三区激情视频| 日本一不卡视频| aa国产精品| 国产高清一区二区| 亚洲福利精品| 亚洲成人国产| 国际精品欧美精品| 国产在线观看91一区二区三区| 日本强好片久久久久久aaa| 久久成人亚洲| 精品视频一区二区三区四区五区| 色偷偷偷在线视频播放| 午夜久久中文| 一区二区小说| 亚洲欧美日韩国产| 国产精品视区| 丝袜美腿成人在线| 日韩三区四区| 免费一级欧美在线观看视频| 精品视频高潮| 播放一区二区| 久久视频国产| 丝袜美腿亚洲色图| 欧美三级第一页| 日韩av二区| 99在线观看免费视频精品观看| 男人天堂欧美日韩| 欧美日韩91| 六月婷婷综合| 午夜宅男久久久| 国产精品嫩模av在线| 精品视频高潮| 亚洲一区观看| 欧美激情精品| 亚洲欧美激情诱惑| 欧美成人精品午夜一区二区| 精品丝袜久久| 蜜桃久久精品一区二区| 国产精品乱战久久久| 国精品一区二区| 亚洲欧洲日韩精品在线| 水蜜桃久久夜色精品一区| 夜久久久久久| 亚洲黄色网址| 91欧美日韩在线| 99久久夜色精品国产亚洲1000部| 日韩三级久久| 精品中文一区| 国产成人精品一区二区免费看京 | 在线视频亚洲| 精品亚洲精品| 日韩欧美中文字幕一区二区三区 | 性欧美长视频| 神马久久午夜| 欧美xxxx中国| 国产一区二区三区亚洲综合| 丝袜美腿诱惑一区二区三区 | 亚洲aⅴ网站| 91精品精品| 日韩成人精品一区二区| 欧美日韩中文| 日韩精品五月天| 久色成人在线| 影音国产精品| 午夜日本精品| 99久久精品网站| 久久久久美女| 久久久国产精品一区二区中文| 国产精品国码视频| 婷婷亚洲成人| 日本久久一区| 国产欧美日韩精品一区二区三区| 中文字幕一区二区av| 久久亚洲精品伦理| 久久九九精品| 亚洲国产专区| 夜夜精品视频| 亚洲一区二区av| 亚洲免费一区三区| 欧美日一区二区三区在线观看国产免| 亚洲精品第一| 日韩 欧美一区二区三区| 日韩国产一二三区| 国产乱码精品| 国产精品调教| 福利一区二区| 国产伊人精品| 亚洲精品在线国产| 国产精品男女| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 天堂网av成人| 伊人久久婷婷|