Shiro中setUnauthorizedUrl("/403")不生效,无法跳转指定页面的解决办法。

Shiro中setUnauthorizedUrl"/403"不生效,无法跳转指定页面的解决办法

问题描述

ShiroConfig中设置未授权页面统一跳转403页面,但是没有权限的用户访问时,并未跳转指定页面,页面报错信息如下:
error
控制台报错如下:
console

问题分析

这是因为shiro源代码中判断了filter是否为AuthorizationFilter,只有perms,roles,ssl,rest,port才是属于AuthorizationFilter,而anon,authcBasic,auchc,user是AuthenticationFilter,所以unauthorizedUrl设置后不起作用。

解决办法

定义一个全局异常捕获类

/**
 * @Title GlobalExceptionHandler.java
 * @description 用于解决shiroFilterFactoryBean.setUnauthorizedUrl("/403");不生效的问题
 * @time 2020年1月8日 上午11:13:30
 * @author wuguodong
 **/

/**
 * @ControllerAdvice注解的作用:是一个Controller增强器,可对controller中被@RequestMapping注解的方法加一些逻辑处理,最常用的就是异常处理;【三种使用场景】全局异常处理。全局数据绑定,全局数据预处理
 * @Order 注解@Order或者接口Ordered的作用是定义SpringIOC容器中Bean的执行顺序的优先级,而不是定义Bean的加载顺序,Bean的加载顺序不受@Order或Ordered接口的影响;
 * @ExceptionHandler 统一异常处理
 * 
 */
@ControllerAdvice
@Order(value = Ordered.HIGHEST_PRECEDENCE)
public class GlobalExceptionHandler {
	@ExceptionHandler(value = AuthorizationException.class)
	public String handleAuthorizationException() {
		return "403";
	}
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

banmajio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值