5.1 認證類調用服務方法
修改 UserDetailsServiceImpl.java ,添加屬性和 setter 方法 ,修改 loadUserByUsername 方法
/**
*認證類
*@author Administrator
*
*/
public class UserDetailsServiceImpl implements UserDetailsService {
private SellerService sellerService;
public void setSellerService(SellerService sellerService) {
this.sellerService = sellerService;
}
@Override
public loadUserByUsername(String username) throws
UsernameNotFoundException {
System.out.println("經過了 UserDetailsServiceImpl");
//構建角色列表
List<GrantedAuthority> grantAuths=new ArrayList();
grantAuths.add(new SimpleGrantedAuthority("ROLE_SELLER"));
//得到商家對象
TbSeller seller = sellerService.findOne(username);
if(seller!=null){ if(seller.getStatus().equals("1")){
}else{
}
}else{
}
}
}
修改 pinyougou-shop-web 的 spring-security.xml ,添加如下配置
經過上述修改後,在登陸頁輸入用戶名和密碼與數據庫一致即可登陸 。
5.1 密碼加密
5.4.1 BCrypt 加密算法
用戶表的密碼通常使用 MD5 等不可逆算法加密後存儲,爲防止彩虹表破解更會先使用一個特定的字符串(如域名)加密,然後再使用一個隨機的 salt(鹽值)加密。 特定字符串是程序代碼中固定的,salt 是每個密碼單獨隨機,一般給用戶表加一個字段單獨存儲,比較麻煩。 BCrypt 算法將 salt 隨機並混入最終加密後的密碼,驗證時也無需單獨提供之前的
salt,從而無需單獨處理 salt 問題。
5.4.1 商家入駐密碼加密
商家申請入駐的密碼要使用 BCrypt 算法進行加密存儲,修改 SellerController.java 的 add 方法
```
/**[/size][/font][/align][font=微軟雅黑][size=3]
*增加
*@param seller
*@return
*/ @RequestMapping("/add")
public Result add(@RequestBody TbSeller seller){
//密碼加密
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); String password = passwordEncoder.encode(seller.getPassword()); seller.setPassword(password);
try {
sellerService.add(seller);
return new Result(true, "增加成功");
} catch (Exception e) { e.printStackTrace();
return new Result(false, "增加失敗");
}
}
```
5.4.1 加密配置
修改 pinyougou-shop-web 的 spring-security.xml ,添加如下配置
`
`
修改認證管理器的配置
```
```
5.5 顯示登錄名
參照運營商後臺
5.6 退出登錄
參照運營商後臺