shiro springmvc 注解 ajax和同步请求 无权限处理处理
2016-07-05 21:55
337 查看
1. springmvc进行错误跳转配置如下
<!-- shiro为集成springMvc 拦截异常 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<!-- 这里你可以根据需要定义N多个错误异常转发 -->
<prop key="org.apache.shiro.authz.AuthorizationException">redirect:/shiro/401</prop>
</props>
</property>
</bean>
2.controller的写法
@RequestMapping("/401")
public String authorizationException(ModelMap modelMap, HttpServletRequest request) {
String requestType = request.getHeader("X-Requested-With");
// ajax 请求
if (requestType != null && requestType.equals("XMLHttpRequest")) {
return "redirect:/shiro/asyn401";
} else {
return "redirect:/shiro/syn401";
}
}
// 异步
@RequestMapping("/asyn401")
public void asyn401(ModelMap modelMap, HttpServletRequest request, HttpServletResponse response) {
ResultDto resultDto = new ResultDto();
resultDto.setResult(ResultDto.resultCode_401);
try {
super.writeJSON(response, resultDto);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 同步
@RequestMapping("/syn401")
public String syn401(ModelMap modelMap, HttpServletRequest request) {
return "/shiro/401";
}
<!-- shiro为集成springMvc 拦截异常 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<!-- 这里你可以根据需要定义N多个错误异常转发 -->
<prop key="org.apache.shiro.authz.AuthorizationException">redirect:/shiro/401</prop>
</props>
</property>
</bean>
2.controller的写法
@RequestMapping("/401")
public String authorizationException(ModelMap modelMap, HttpServletRequest request) {
String requestType = request.getHeader("X-Requested-With");
// ajax 请求
if (requestType != null && requestType.equals("XMLHttpRequest")) {
return "redirect:/shiro/asyn401";
} else {
return "redirect:/shiro/syn401";
}
}
// 异步
@RequestMapping("/asyn401")
public void asyn401(ModelMap modelMap, HttpServletRequest request, HttpServletResponse response) {
ResultDto resultDto = new ResultDto();
resultDto.setResult(ResultDto.resultCode_401);
try {
super.writeJSON(response, resultDto);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 同步
@RequestMapping("/syn401")
public String syn401(ModelMap modelMap, HttpServletRequest request) {
return "/shiro/401";
}
相关文章推荐
- 详解JDK 5 Annotation 注解之@Target的用法介绍
- java教程之java注解annotation使用方法
- Java中注解的工作原理
- Java注解之Retention、Documented、Inherited介绍
- spring aop两种配置方式
- 深入浅析Java注解框架
- Restful传递数组参数及注解大全
- Java @Deprecated注解的作用及传递性
- 全面解析Java中的注解与注释
- 小议Java中@param注解与@see注解的作用
- Java注解详细介绍
- 详解Java编程中Annotation注解对象的使用方法
- JDK 5 提供的注解:Target、Inherited和Documented的区别
- SpringMVC restful 注解之@RequestBody进行json与object转换
- 基于Java 注解(Annotation)的基本概念详解
- Spring常用注解汇总
- Java中三种简单注解介绍和代码实例
- 详解Java Spring各种依赖注入注解的区别
- 详解Java注解教程及自定义注解
- 一个奇怪的异常,SSH使用注解方式