我们不能将用户的密码以明文存储,否则如果自己的数据库被入侵,用户在其他网站的帐号也可能被盗。
我对各种加密算法并不了解,就不说什么了,直接开始。
注册时生成密文
Shiro 提供了一个 SimpleHash 类可以很方便的对字符串进行加密,只需一行代码就可以对密码进行加密。
String hashPassword = new SimpleHash("SHA-256", password, username+"reg", 1024).toString();
它的第一个参数是加密的算法,第二个是要加密的内容,第三个是盐(这个参数随便你定),第四个是期望的次数。
得到加密之后的密码,就可以将整个 User 对象存储到数据库中,以后登录的时候再通过 Realm 查询。
/*** 注入用于存储 user 对象*/
@Autowired
private UserService userService;
@GetMapping("reg")
public Object reg(@RequestParam(name = "username") String username,
@RequestParam(name = "password") String password) {
String hashPassword = new SimpleHash("SHA-256", password, username+"reg", 1024).toString();
User user = new User();