shiro+SpringMVC中根据不同身份进入不同的页面
来源:互联网 发布:智能手机反黄软件 编辑:程序博客网 时间:2024/05/29 07:57
1.首先自定义一个realm类,这个类需要继承FormAuthenticationFilter
public class MyFormAuthenticationFilte extends FormAuthenticationFilter{
@Override
protected boolean onLoginSuccess(AuthenticationToken token, Subject subject, ServletRequest request,
ServletResponse response) throws Exception {
//清楚缓存
WebUtils.getAndClearSavedRequest(request);
subject = SecurityUtils.getSubject();
//取身份信息
ActiveUser activeUser = (ActiveUser) subject.getPrincipal();
//管理员登录入口
if(activeUser.getRoleid()==3){
WebUtils.redirectToSavedRequest(request, response, "/admindex");
return false;
//老师入口
}else if(activeUser.getRoleid()==2){
WebUtils.redirectToSavedRequest(request, response, "/loginvalue.action");
return false;
//学生管理入口
}else if(activeUser.getRoleid()==1)
WebUtils.redirectToSavedRequest(request, response, "/loginvalue.action");
return false;
}
}
2.这个是登录后对异常的处理
//登陆提交地址,和applicationContext-shiro.xml中配置的loginurl一致
@RequestMapping("login")
public String login(HttpServletRequest request)throws Exception{
//如果登陆失败从request中获取认证异常信息,shiroLoginFailure就是shiro异常类的全限定名
String exceptionClassName = (String) request.getAttribute("shiroLoginFailure");
//根据shiro返回的异常类路径判断,抛出指定异常信息
if(exceptionClassName!=null){
if (UnknownAccountException.class.getName().equals(exceptionClassName)) {
//最终会抛给异常处理器
throw new CustomException("账号不存在");
} else if (IncorrectCredentialsException.class.getName().equals(
exceptionClassName)) {
throw new CustomException("用户名/密码错误");
} else {
throw new Exception();//最终在异常处理器生成未知错误
}
}
//此方法不处理登陆成功(认证成功),shiro认证成功会自动跳转到上一个请求路径
//登陆失败还到login页面
return "forward:/index.jsp";
}
3,增加shiro 的配置文件
<property name="filters">
<map>
<!-- 将自定义 的FormAuthenticationFilter注入shiroFilter中-->
<entry key="authc" value-ref="myFormAuthenticationFilte" />
</map>
</property>
0 0
- shiro+SpringMVC中根据不同身份进入不同的页面
- shiro+SSM不同身份的用户退出到不同的登录页面
- Android根据不同身份配置APP对应的不同模块
- jsp页面中同一个超链接地址根据不同的条件而跳到不同的页面
- SpringMvc国际化 根据不同请求调用不同的资源文件
- 根据数据库中字段的不同数字,页面使用不同的html标签
- shiro实现不同身份使用不同Realm进行验证
- shiro实现不同身份使用不同Realm进行验证
- shiro实现不同身份使用不同Realm进行验证
- 在Mybits中,根据页面下拉列表当中不同条件,查询不同的表。
- Web页面根据不同的分辨率显示不同的图片
- jsp:根据不同的flag值调用不同的页面
- 根据radio选择的不同,跳转到不同的页面
- 根据页面来源不同返回不同页面
- 根据类别显示不同的页面元素
- Springmvc同一请求下根据不同的逻辑返回页面或者json
- 页面根据不同Url显示不同Title以及不同的Mete
- 页面根据不同Url显示不同Title以及不同的Mete
- POJ 1472 Instant Complexity(大模拟 判断程序执行次数)
- maven核心pom.xml详解
- 【android所有系统广播总结以及用法】 and 【EventBus 3.0 的用法】
- yml
- MyBatis 判断传入的变量是否等于某个数字问题
- shiro+SpringMVC中根据不同身份进入不同的页面
- Java序列化、反序列化以及串行化与并行化
- oracle 数据类型详解---日期型
- 基于phantomJs的Java后台网页截图技术
- 每天一个linux命令:vmstat命令
- java对象转化成xml文件
- 【B2B】商用电视酒店运营解决方案
- Java动态绑定
- Java 类加载机制 ClassLoader Class.forName 内存管理 垃圾回收GC