iteye_2419 2009-07-22 00:10
浏览 262
已采纳

dwr + extjs + spring 通过MethodInterceptor进行权限控制遇到的问题

目前一个项目运用标题框架进行权限控制碰到以下问题:
MethodInterceptor 下的方法
[code="java"]
public Object invoke(MethodInvocation invocation) throws Throwable {
//通过dwr 的session 里面的值来判定用户是否登录,如果没有登录?
//跳转到登录页面
}
[/code]
现在跳转这里碰到问题
1.如果得到dwr 传过来的信息,因为这里过来上下文是
HttpServletResponse response = WebContextFactory.get().getHttpServletResponse();
,是xml...假格式的response ,这里response.sendRedirect("index.html"); 在前台没有起到跳转作用。
2.或者是在invoke 直接返回一个没有登录字符串到前台,让dwr调用的方法得到返回值来判定是否登录,而一旦dwr调用方法本身返回的类型是非string 型的话,就会产生异常。

我不知道acegi 或者Spring Security 里面是怎么来对这种情况进行处理的,不知道大家有没有碰到过类似的问题。有什么方法来解决这个问题,或者有其他的权限控制,希望大家能给予帮助,谢谢!
[b]问题补充:[/b]
首先谢谢各位的回答,我突然觉得,这个分数不好给了。
如果能把这个分数分配给多个人就好了。
我对各位的建议给一个回复,可能我的问题不是很详细,导致有些地方表述的意图不是很明确。
pJun:目前这个项目不走前台的url,所有的数据的获取都是直接走dwr,所有的权限控制是走spring 方法上的来走,通过在dwr调用service 方法的上面加annotation ,来得到这个method 需要的权限点,再通过MethodInterceptor 中得到session里面保存用户所具有的权限点,来控制用户是否有权限来调用这个方法。如果走filter的话,我不知道是否能拿到dwr所调用的方法的信息,以及该方法所应该局要的权限点信息。
yourgame:谢谢你全局架构的建议,但是目前这个项目很特殊,由于是给客户公司做的,我们是分层开发,而做前台用extjs 是客户公司的人员,对于extjs 认识不是很深刻,如果用ext.Ajax 这个下面来走的话,是不是也要走url 来得到数据啊,就是说这个里面应该有一个struts,或者webwork或者servlet的东西在里面,用来引导这个ajax的请求?
lt0604:恩,这个方法来解决这个登录权限跳转问题是可以,但目前没按这种方式来走,因为在java dwr 调用里面会抛出多种类型的异常,而且前台有根据异常会给出相应的提示信息的需求。
xyz20003:要的就是这个思路,由于这个问题已经解决,没有用到Spring Security,是自己写了一个满足这个项目权限控制的东东。不过里面的思路就是这样,现在是在MethodInterceptor 抛出异常,通过dwr自己对异常的处理机制来实现的。
layer555:“而一旦dwr调用方法本身返回的类型是非string 型的话,就会产生异常。”就是我一个dwr方法请求得到一个list,而在这个MethodInterceptor 返回一个string ,就会抛异常出来。我现在项目里面就是用你这个,通过dwr.engine.setErrorHandler(callBackFunction);来处理,把错误代码放到exception里面。前台得到exception 里面的错误信息进行全局的处理。
再次谢谢大家。我真的不知道怎么给分了。

  • 写回答

7条回答 默认 最新

  • layer555 2009-07-24 16:12
    关注

    在invoke 直接返回一个没有登录字符串到前台,让dwr调用的方法得到返回值来判定是否登录,而一旦dwr调用方法本身返回的类型是非string 型的话,就会产生异常。
    这样是肯定可行的,我也一直是这么做的,只不过你所指的非String类型就产生异常是什么意思?所有的基本类型默认都是可以转换的,自定义的对象只要配置相应的converter就可以了;如:



    在这里match是支持*匹配的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。