选择注册新账号后跳转到注册页面

输入账户和密码后注册,会在数据库中插入一条新的记录。

这里我页面上输入的是 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 id="passwordEncoder" 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对用户密码进行加密。
要使用新注册的账户登录就需要在配置文件中配置加密策略
配置后原来的账号因为密码没有加密将不能使用
六、示例工程源码
示例工程已经上传到码云上,如果有需要欢迎大家参考
示例工程
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易采站长站。










