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

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

Spring security實現對賬戶進行加密

瀏覽:162日期: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| 国产视频一区二区在线播放| 亚洲女人av| 国产视频一区在线观看一区免费| 欧美.日韩.国产.一区.二区| 五月精品视频| 亚洲在线免费| 蜜桃久久久久久| 日韩精彩视频在线观看| 日韩av中文字幕一区| 热久久免费视频| 欧美一区久久| 成人久久一区| 成人亚洲一区| 亚洲综合精品四区| 日韩精品一卡二卡三卡四卡无卡| 美女尤物国产一区| 国产成人精品一区二区三区视频| 91亚洲国产| 国产超碰精品| 自拍日韩欧美| 日韩有吗在线观看| 国产精东传媒成人av电影| 精品久久精品| 日韩欧美二区| 国内亚洲精品| 国产视频亚洲| 国产乱人伦丫前精品视频 | 日韩av二区| 日韩在线精品| 激情欧美亚洲| 日韩欧美精品一区二区综合视频| 国产日韩欧美一区二区三区| 精品国产午夜| 欧美日韩黑人| 色8久久久久| 国产精品免费精品自在线观看| 精品一区二区三区中文字幕| 久久中文字幕二区| 日本国产一区| 国产福利片在线观看| 不卡一区综合视频| 日本v片在线高清不卡在线观看| 老司机免费视频一区二区| 国产精品99一区二区| 日本不卡一二三区黄网| 亚洲精品**中文毛片| 亚洲欧美日韩国产一区| 国产福利资源一区| 欧美va天堂在线| 国产图片一区| 日韩不卡免费高清视频| 在线精品福利| 97国产精品| 亚洲人成亚洲精品| 电影91久久久| 一区二区国产在线观看| 国产成人1区| 亚洲精品字幕| 成人va天堂| 国产精品久久久久77777丨| 欧美日韩国产在线观看网站| 国产精品宾馆| 另类激情亚洲| 日韩在线看片| 国产精品一区二区精品| 亚洲婷婷在线| 麻豆精品蜜桃视频网站| 午夜精品影院| 精品国产乱码久久久久久樱花 | 五月天av在线| 天堂va在线高清一区| 日韩免费小视频| 国产精品丝袜在线播放| 午夜亚洲福利在线老司机| 精品色999| 日本91福利区| 国产精品日本| 日韩在线观看不卡| 国产激情精品一区二区三区| 天堂成人国产精品一区| 日韩在线精品| 久久精品国产99国产精品| 中文字幕av一区二区三区人| 久久麻豆精品| 国产伦久视频在线观看| 国产日韩一区| 亚洲欧美在线专区| 伊人久久亚洲热| 精品成人免费一区二区在线播放| 国产精品99久久免费观看| 亚洲三级av| 红桃视频国产精品| 日韩欧美精品| 久久精品九色| 国产亚洲一卡2卡3卡4卡新区| 久久福利精品| 国产精品日韩| 亚洲激情中文| 亚洲小说欧美另类婷婷| 免费高潮视频95在线观看网站| 久久超碰99| 欧美日韩亚洲一区二区三区在线| 亚洲五月综合| 一区二区电影在线观看| 99在线精品视频在线观看| 国产99精品一区| 91精品一区二区三区综合| 狠狠久久伊人中文字幕| 免费在线观看一区| 日韩av一二三| 日韩一区二区三区高清在线观看 | 亚洲香蕉网站| 欧美成人综合| 免费不卡中文字幕在线| 久久久久久久久久久9不雅视频| 精品91福利视频| 精品女同一区二区三区在线观看| 久久99精品久久久久久园产越南 | 国产一区二区三区天码| 精品国产成人| 欧美韩日一区| 粉嫩av一区二区三区四区五区 | 国产精品超碰| 麻豆免费精品视频| 麻豆精品国产91久久久久久| 精品视频免费| 欧美一区久久久| 亚洲特色特黄| 久久高清免费观看| 日韩一区中文| 久久精品 人人爱| 麻豆国产欧美日韩综合精品二区| 久久99影视| 综合日韩av| 欧美久久精品一级c片| 视频一区视频二区中文| 亚洲人成高清| 国产精品一区毛片| 国产不卡av一区二区| 久久久久99| 免费日韩av| 欧美一区在线观看视频| 国产精品videossex久久发布| 精品成人18| 欧美成人基地| 丝袜美腿高跟呻吟高潮一区| 日韩一区二区三区免费视频| 国产精品一国产精品| 精品在线网站观看| 99久久夜色精品国产亚洲1000部| 宅男噜噜噜66国产日韩在线观看| 亚洲精品在线国产| 国产精品天堂蜜av在线播放| 91一区二区| 最新日韩av| 91成人精品在线| 国产一区一一区高清不卡| 欧美一级精品| 日韩亚洲精品在线观看| 精品高清久久| 黄色成人精品网站| 久久国产尿小便嘘嘘| 91综合网人人| 99国产一区| 国产精品久久久久久久久久久久久久久| 国产拍在线视频| 国产视频久久| 麻豆免费精品视频| 99精品99| 欧美成人精品午夜一区二区| 久久一区二区三区电影| 日韩一区二区三区免费视频| 91亚洲自偷观看高清| 视频在线在亚洲| 麻豆国产精品视频| 亚洲一区黄色| 麻豆一区在线| 99视频精品| 免费日韩成人| 亚洲少妇自拍| 精品黄色一级片| 免费日本视频一区| 高清一区二区| 日韩一区二区三区在线看| 欧洲av不卡| 国产日韩三级| 亚洲综合国产| 日韩毛片视频| 国产精品手机在线播放| 美女网站一区| 麻豆一区二区三| 免费观看在线综合色| 精品九九在线| 视频一区二区不卡| 中文字幕在线免费观看视频| 日韩av中文在线观看| 91精品福利| 成人亚洲一区二区|