Shiro 的认证方式
1.@RequestMapping() 获得页面传过来的用户名和密码
代码如
@RequestMapping(value = "login.do", method = RequestMethod.POST)
public String doLogin(String loginName, String loginPwd) {
2.获得一个登陆对象
Subject subject = SecurityUtils.getSubject();
3.获得一个令牌Token(如同你要开门你就需要一把钥匙)
UsernamePasswordToken token = new UsernamePasswordToken(loginName, loginPwd);
这两个参数就是用户的登录名和密码
注意参数名要和页面的字段一样
4.开始登录 如同我去开门需要钥匙
登录对象调用一个login的方法
subject.login(token);
5.在自己自定义的域里面自动认证
获得令牌里面的登录名
String loginName = (String) token.getPrincipal();
6.将拿到的值在数据库中查询,
UserInfo userInfo = userInfoMapper.selectByLoginName(loginName);
判断查询结果是否为空
if (userInfo == null) {
return null;
}
7.创建一个SimpleAuthenticationInfo对象
SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(userInfo, userInfo.getLoginPwd(),"");
三个参数(对象,数据库查询出的密码)
8.将info返回
return info;