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 ,添加如下配置
<!-- 引 用 dubbo 服 务 -->
<dubbo:application name="pinyougou-shop-web" />
<dubbo:registry address="zookeeper://192.168.25.129:2181"/>
<dubbo:reference id="sellerService" interface="com.pinyougou.sellergoods.service.SellerService" >
</dubbo:reference>
<beans:bean id="userDetailService" class="com.pinyougou.service.UserDetailsServiceImpl">
<beans:property name="sellerService" ref="sellerService"></bean:property>
</beans:bean> 经过上述修改后,在登陆页输入用户名和密码与数据库一致即可登陆 。 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 ,添加如下配置
<beans:bean id="bcryptEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder" />
修改认证管理器的配置
<!-- 认证管理器 -->
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref='userDetailService'>
<password-encoder ref="bcryptEncoder"></password-encoder>
</authentication-provider>
</authentication-manager>
5.5 显示登录名 参照运营商后台 5.6 退出登录 参照运营商后台