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

搭建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", "
")); return mv; } }

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

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

3. 问题解决

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

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

你可能感兴趣的:(Springboot,shiro)