1.Controller层
@RequestMapping("")
public String login(Employee employee){
//1.获取subject
Subject subject = SecurityUtils.getSubject();
//2.封装用户数据
UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(employee.getPhone(),employee.getPassword());
//3.指定登录方法
try {
subject.login(usernamePasswordToken);
//执行该方法,会到Realm中验证,没有异常登陆成功
}catch (UnknownAccountException e){//用户名不存在
return "";
}catch (IncorrectCredentialsException e){//密码错误
return "";
}
return "";
}
2.Realm层实现验证
UsernamePasswordToken usernamePasswordToken = (UsernamePasswordToken) token;
//当和数据库中的用户名不同时,底层会抛出UnknownAccountException异常
if (!usernamePasswordToken.getUsername().equals("")){
return null;
}
/**
* 判断密码,直接返回AuthenticationInfo的子类
* 第一个参数返回给login方法的数据
* 第二个参数为数据库中的密码
* 第三个参数shiro的名字
*/
return new SimpleAuthenticationInfo("","数据库中的密码","");