Springboot+shiro里的未授权链接无作用

来源:互联网 发布:无线淘宝装修免费模板 编辑:程序博客网 时间:2024/06/04 00:51

搭建Springboot+shiro时,想统一管理未授权的页面为自己的页面,结果发现不起作用,原因总结如下:

我在java里写的ShiroConfiguration代码,对setUnauthorizedUrl不起作用。网上也找了好多代码和解决方案,最终我自定义了异常处理器解决了,记录一下

1. 异常处理代码

import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.shiro.authz.UnauthorizedException;import org.springframework.web.servlet.HandlerExceptionResolver;import org.springframework.web.servlet.ModelAndView;public class MyExceptionResolver implements HandlerExceptionResolver{        public ModelAndView resolveException(HttpServletRequest request,              HttpServletResponse response, Object handler, Exception ex) {          // TODO Auto-generated method stub          System.out.println("==============异常开始=============");          //如果是shiro无权操作,因为shiro 在操作auno等一部分不进行转发至无权限url          if(ex instanceof UnauthorizedException){              ModelAndView mv = new ModelAndView("error");              return mv;          }          ex.printStackTrace();          ModelAndView mv = new ModelAndView("error");          mv.addObject("exception", ex.toString().replaceAll("\n", "<br/>"));          return mv;      }  }  

2. 在配置shrio的java代码中加入以下代码

@Beanpublic HandlerExceptionResolver solver(){HandlerExceptionResolver handlerExceptionResolver=new MyExceptionResolver();return handlerExceptionResolver;}

3. 问题解决

如果不是java配置的shiro,而是用xml直接配置的,就没问题。

和springsecurity比较的话,除了这个坑,感觉还是比springsecurity简单