Shiro的未授权页面

今天在整合shiro的时候发现,在shiro的过滤器里面配置未授权的跳转页面是无效的

<property name="unauthorizedUrl" value="/unauthorized.jsp"></property>

解决方案1
需要在springMVC的配置文件配置异常的映射解析器。当出现某个异常时跳转到相应的页面。比如下面第一个未授权的异常就跳转到你配置的视图解析器前缀+unauthorized+后缀
一般都是/WEB-INF/view/unauthorized.jsp

	 <!-- 异常处理 -->
 <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
  <property name="exceptionMappings">
   <props>
    <prop key="org.apache.shiro.authz.UnauthorizedException">unauthorized</prop>
    <prop key="org.apache.shiro.authz.UnauthenticatedException">jsp/unauthorized</prop>
    <prop key="org.apache.shiro.authz.AuthorizationException">jsp/unauthorized</prop>           
    <prop key="java.lang.Throwable">jsp/unauthorized</prop>
   </props>
   </property>
 </bean>

解决方案2
编写controller的全局异常监控,监控unauthorized未授权的异常。我这里是直接返回一个jason对象
ResultObj这个类是自己写的。根据需要返回什么什么自己选择

public static final ResultObj UNAUTHORIZED = new ResultObj("405", "未授权");


@RestControllerAdvice
public class GlobalExceptionHanderAdvise {

	/**
	 * 未授权
	 * 只要当前项目的代码抛出UnauthorizedException就会回调
	 */
	@ExceptionHandler(value= {UnauthorizedException.class})
	public ResultObj unauthorized() {
		return ResultObj.UNAUTHORIZED;
	}
	
}

注意:这两种方式如果同时配置的话,起作用的是第二种方式。这两种方式都是在使用shiro注解开发的时候才需要用到。如果直接使用jsp或者thymeleaf的标签俩判断是否有权限,就不会抛出异常,因为用了标签,有权限就直接显示,没权限就不显示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值