黑马程序员技术交流社区

标题: 【郑州校区】Java之品优购课程讲义_day04(8) [打印本页]

作者: 谷粒姐姐    时间: 2018-8-13 14:09
标题: 【郑州校区】Java之品优购课程讲义_day04(8)
5.1 认证类调用服务方法
修改 UserDetailsServiceImpl.java ,添加属性和 setter 方法 ,修改 loadUserByUsername 方法
[AppleScript] 纯文本查看 复制代码
/**

*认证类

*@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{

[AppleScript] 纯文本查看 复制代码
}


}else{




}


}


}
修改 pinyougou-shop-web 的 spring-security.xml ,添加如下配置
[AppleScript] 纯文本查看 复制代码
<!-- 引 用 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 方法
[AppleScript] 纯文本查看 复制代码
/**

*增加

*@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 ,添加如下配置
[AppleScript] 纯文本查看 复制代码
<beans:bean  id="bcryptEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"  />
修改认证管理器的配置
[AppleScript] 纯文本查看 复制代码
<!-- 认证管理器 -->

<authentication-manager  alias="authenticationManager">

<authentication-provider  user-service-ref='userDetailService'>

<password-encoder  ref="bcryptEncoder"></password-encoder>

</authentication-provider>

</authentication-manager>
5.5 显示登录名
参照运营商后台
5.6 退出登录
参照运营商后台






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2