dwr+spring security在方法权限判断失败后的一个问题
2010-09-08 18:29
357 查看
简单记录一下,debug了N久代码,还是尚未彻底搞明白这个问题,只是懵懵懂懂,servlet的代码进不去了,ss的代码倒是没发现什么情况,反而在cglib的代码中,看到不少非主流的情况。
现象: dwr异步请求过程中,调用了一个具有权限控制的代码,调用这个代码需要特定的角色才可以,通过判断,当前的用户并不具有这个权限,所以不允许被调用,按照ss的习惯,应该是抛出一个Access 拒绝的异常,然后通过匹配403的相关配置定位到错误页面或者在本页面显示错误信息。但是现在的情况是,权限检查失败,在页面直接alert了一个ERROR的错误,通过查阅dwr的engine.js后发现这个是dwr点errorHandler方法中弹出的,情况是当出现异常的时候。
dwr调用异步返回点是xml信息,这个xml解析后可以拿到相应的结果,但是在ss校验失败的过程中,代码并未执行,而是ss由于需要定位到错误页面,返回了一个字符串之类的,导致dwr发生异常。(?????????????真的么???)
解决办法也还是有的,只是需要重写dwr的errorHandler方法,在其内部处理当抛出异常的情形。同时在dwr中声明一下异常的类型
<convert converter="bean" match="org.springframework.security.AccessDeniedException"/>
暂时可以用这个方案解决。
目前系统采用的安全控制有三层,第一层是页面渲染的时候,用户不具有权限点菜单将被隐藏;第二层是由于目前的后台是富客户端类型点,ajax和js等代码丰富,所以js中进行了第二次的权限判断,这个由于是在客户端进行的,所以不会带来额外的压力。最后一层是由于富客户端的请求都是异步而非url的,所以不能通过拦截url的方式让ss自动执行,所以需要在方法层面上进行控制,在dwr点bean的方法之上,配置了权限相关内容。
现象: dwr异步请求过程中,调用了一个具有权限控制的代码,调用这个代码需要特定的角色才可以,通过判断,当前的用户并不具有这个权限,所以不允许被调用,按照ss的习惯,应该是抛出一个Access 拒绝的异常,然后通过匹配403的相关配置定位到错误页面或者在本页面显示错误信息。但是现在的情况是,权限检查失败,在页面直接alert了一个ERROR的错误,通过查阅dwr的engine.js后发现这个是dwr点errorHandler方法中弹出的,情况是当出现异常的时候。
dwr调用异步返回点是xml信息,这个xml解析后可以拿到相应的结果,但是在ss校验失败的过程中,代码并未执行,而是ss由于需要定位到错误页面,返回了一个字符串之类的,导致dwr发生异常。(?????????????真的么???)
解决办法也还是有的,只是需要重写dwr的errorHandler方法,在其内部处理当抛出异常的情形。同时在dwr中声明一下异常的类型
<convert converter="bean" match="org.springframework.security.AccessDeniedException"/>
暂时可以用这个方案解决。
目前系统采用的安全控制有三层,第一层是页面渲染的时候,用户不具有权限点菜单将被隐藏;第二层是由于目前的后台是富客户端类型点,ajax和js等代码丰富,所以js中进行了第二次的权限判断,这个由于是在客户端进行的,所以不会带来额外的压力。最后一层是由于富客户端的请求都是异步而非url的,所以不能通过拦截url的方式让ss自动执行,所以需要在方法层面上进行控制,在dwr点bean的方法之上,配置了权限相关内容。
相关文章推荐
- 在同一个类中调用另一个方法没有触发 Spring AOP 的问题【转】
- spring mvc+dwr 1的一个奇怪的问题
- SpringBoot 监控管理模块actuator没有权限的问题解决方法
- spring mvc+dwr 1的一个奇怪的问题
- (已解决)如何让Spring MVC Controller的同一个方法,根据逻辑判断返回JSON或者HTML视图?
- 看了书后,照着书上的方法一步一步去做,却失败了,555 真是的,写书的人啊,却不考虑一下细节问题 新建一个目录 [liu@liu-desktop hellomod]$mddir hellomod [liu@liu-desktop hellomod]$cd
- Hadoop HDFS 文件访问权限问题导致Java Web 上传文件到Hadoop失败的原因分析及解决方法
- spring 事务处理中,同一个类中:A方法(无事务)调B方法(有事务),事务不生效问题
- spring+springmvc整合mabytis时mapper注入失败问题解决方法
- 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq
- 请教一个问题,Android应用运行时在调用某个API(比如相机)时,系统如何判断这个应用是否具备相应的权限?
- 在同一个类中调用另一个方法没有触发 Spring AOP 的问题
- ######crm01_最快速:搭建纯注解ssh整合环境(只用一个Spring配置)素材提供jar包,只有两步工作:①写Spring配置②写ssh注解+简单逻辑=遇到action创建失败问题
- 请教一个问题,Android应用运行时在调用某个API(比如相机)时,系统如何判断这个应用是否具备相应的权限?
- 如何让Spring MVC Controller的同一个方法,根据逻辑判断返回JSON或者HTML视图?
- Spring AOP代理机制以及方法调用在同一个类的另一个方法的问题
- 在Web应用中,会用到大量的Ajax请求,在Ajax请求中存在的一个问题就是如何判断session超时,在网上找到的一个java中处理此问题方法:
- Spring Boot集成Security使用数据库用户角色权限用户名问题
- spring mvc+dwr 1的一个奇怪的问题
- spring 中配置log4j输出日志常见的一个小问题解决方法