Shiro 自定义realm下登陆只抛出AuthenticationException
问题
在登录时,抛出自定义的异常, 如,throw new RoleSelectException()
想要捕获时,发现出错,只能获取 AuthenticationException 下的异常
处理方法
可以让 RoleSelectException继承 AuthenticationException(),
再进行判断,做相关业务处理
try {
subject.login(token);
loginLogService.insert(username, "登录成功", true);
return success("登录成功,跳转中...", loginService.loginSuccess());
} catch (AuthenticationException e) {
String msg = StringUtils.isEmpty(e.getMessage()) ? "用户名//密码错误" : e.getMessage();
if (e instanceof RoleSelectException) {
return error(((RoleSelectException) e).getCode(), msg);
}
loginLogService.insert(username, msg);
return error(msg);
}