spring security3.x学习(24)_拒绝访问异常处理(AccessDeniedException)
2013-09-23 18:09
246 查看
咱们看一下spring security是如何处理AccessDeniedException的。
“
因为缺少GrantedAuthority或其它需要的权限被拒绝的时候,他们看到的是servlet容器的默认HTTP 403(访问拒绝)页面。这 个 页 面 是 o.s.s.web.access.AccessDeniedHandler 默 认 行 为 的 结 果 , 它 被ExceptionTranslationFilter所触发以响应框架抛出的一个AccessDeniedException异常。
”
我看了书中的例子,书中的例子导入后,会报错的,所以我自己写了一个。
首先在http标签下配置一个AccessDenied指向路径:
然后配置controller:
我说的报错就是这里,我们通过request.getAttribute("SPRING_SECURITY_403_EXCEPTION");可以获取AccessDeniedException对象,从而拿到错误信息了。那我是怎么知道这个常量的名字叫做"SPRING_SECURITY_403_EXCEPTION"呢?
看一下源码就知道了:
源码中存放了AccessDeniedException对象,我们可以获取他,在我们自己的Controller中。最后我们要完成我们自己的jsp页面。
只有一句话(EL表达式):错误信息:${errorDetails}
我们在研究一下什么会触发这类异常呢,看一下下边的表:
这样我们就知道了,其实AccessDeniedException是在没有权限时,被拒绝访问了。我想 大概就是403错误码吧。
下载地址:http://download.csdn.net/detail/dulei294948/6307619
“
因为缺少GrantedAuthority或其它需要的权限被拒绝的时候,他们看到的是servlet容器的默认HTTP 403(访问拒绝)页面。这 个 页 面 是 o.s.s.web.access.AccessDeniedHandler 默 认 行 为 的 结 果 , 它 被ExceptionTranslationFilter所触发以响应框架抛出的一个AccessDeniedException异常。
”
我看了书中的例子,书中的例子导入后,会报错的,所以我自己写了一个。
首先在http标签下配置一个AccessDenied指向路径:
<!-- 拒绝请求的处理 --> <access-denied-handler error-page="/accessDenied.html"/>
然后配置controller:
@Controller public class ErrorController { @RequestMapping("/accessDenied") public String accessDenied(ModelMap mm,HttpServletRequest request){ Object obj = request.getAttribute("SPRING_SECURITY_403_EXCEPTION"); if(null != obj){ AccessDeniedException adx = (AccessDeniedException)obj; mm.put("errorDetails", adx.getMessage()); } return "error/403"; } }
我说的报错就是这里,我们通过request.getAttribute("SPRING_SECURITY_403_EXCEPTION");可以获取AccessDeniedException对象,从而拿到错误信息了。那我是怎么知道这个常量的名字叫做"SPRING_SECURITY_403_EXCEPTION"呢?
看一下源码就知道了:
源码中存放了AccessDeniedException对象,我们可以获取他,在我们自己的Controller中。最后我们要完成我们自己的jsp页面。
只有一句话(EL表达式):错误信息:${errorDetails}
我们在研究一下什么会触发这类异常呢,看一下下边的表:
这样我们就知道了,其实AccessDeniedException是在没有权限时,被拒绝访问了。我想 大概就是403错误码吧。
下载地址:http://download.csdn.net/detail/dulei294948/6307619
相关文章推荐
- spring security3.x学习(24)_拒绝访问异常处理(AccessDeniedException)
- [ASP.NET]System.UnauthorizedAccessException: 拒绝访问。
- Set-WSManQuickConfig : 拒绝访问。set-wsmanquickconfig access is denied windows 7
- 【mysql】关于mysql拒绝访问错误:Access denied for user 'root'@'localhost' (using password:YES)
- System.UnauthorizedAccessException: 拒绝访问 处理办法.
- System.UnauthorizedAccessException: 拒绝访问 解决方法
- System.UnauthorizedAccessException:拒绝访问的处理办法.
- [ASP.NET]System.UnauthorizedAccessException: 拒绝访问。
- System.UnauthorizedAccessException: 拒绝访问。
- System.UnauthorizedAccessException: 拒绝访问 temp 目录。用来运行 XmlSerializer 的标识“NT AUTHORITY\NETWORK SERVICE”没有访问 temp 目录的足够权限。CodeDom 将使用进程正在使用的用户帐户进行编译,这样,如
- System.UnauthorizedAccessException: 拒绝访问temp 目录
- Vista系统中的拒绝访问(Access Denied to Documents and Settings )
- java.io.FileNotFoundException: savepath\huachuan\photo (拒绝访问。)异常处理
- System.UnauthorizedAccessException: 拒绝访问 temp 目录。用来运行 XmlSerializer 的标识“NT AUTHORITY\NETWORK SERVICE”没有访问 temp 目录的足够权限。CodeDom 将使用进程正在使用的用户帐户进行编译,这样,如
- 【错误录】System.UnauthorizedAccessException: 对路径的访问被拒绝?
- C# System.UnauthorizedAccessException:“对路径“C:\xxx”的访问被拒绝。
- ASP.NET IIS System.UnauthorizedAccessException: 对路径“C:\......xls”的访问被拒绝。
- ASP.NET 访问文件夹权限不足,System.UnauthorizedAccessException拒绝访问的处理方法
- System.UnauthorizedAccessException: 拒绝访问
- [解决(转)]访问已被业务数据连接拒绝(Access denied by Business Data Connectivity)