Java Home

Java技术修炼中...
posts - 20, comments - 22, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
前段时间作了一个简单的系统,其中涉及到后台管理,当然也就遇到了权限验证的问题,由于初次做J2EE项目,所有这些东西懂我来说都是个开始。
对于权限验证,如果程序由目录划分,如管理员访问的页面都放在admin下,这样我们可以写一个权限验证的过滤器,然后配置admin目录都要经过这个过滤器即可。这样对于jsp页面的权限验证比较容易。但对于action(控制器类)就不好控制了,因为action是没有目录概念的,如我们访问action的地址为:http://xxx/sample/ac1.action,同时如果使用http://xxx/sample/xx/xx/ac1.action同样可以访问,这是因为只要在这个项目目录下,访问的页面如果为action则struts就会去查询这个action名字对应的类,而不管前面的目录结构。因此我们不能再用过滤器对管理员部分的action进行验证。经过查看struts2的相关资料发现了拦截器这个有用的东西。通过struts2的配置文件的包管理功能和拦截器可以轻松的对指定的action做管理(拦截),如
===================================================
<package name="user" extends="struts-default">
  <!-- 前台用户操作部分 -->
  <!-- 框架页,显示分类 -->
  <action name="queryCateForwardUI"
   class="com.topsoft.bookmanage.web.action.QueryCateForwardActionUI">
   <result>/mainPage.jsp</result>
  </action>
    。。。。。
</package>
<!-- 管理员操作部分 -->
 <package name="manager" extends="struts-default">
  <!-- 拦截器 -->
  <interceptors>
   <interceptor name="auth" class="com.topsoft.common.LogonInterceptor" />
   <interceptor-stack name="authStack"> 
                <interceptor-ref name="auth"/> 
                <interceptor-ref name="paramsPrepareParamsStack"/> 
            </interceptor-stack> 
  </interceptors>
  <!-- 默认执行的拦截器 -->
  <default-interceptor-ref name="authStack"/>
  <!-- 全局Action映射 -->
  <global-results>
   <result name="login" type="redirect">/managerLoginUI.action</result>
  </global-results>
  
  <!-- 后台管理首页面UI -->
  <action name="managerIndexUI"
   class="com.topsoft.bookmanage.web.action.ManagerIndexActionUI">
   <result>/admin/index.jsp</result>
  </action>
 。。。。。。
</package>
=================================================

通过使用拦截器+过滤器可以完美解决权限验证的问题。

评论

# re: Struts2下的用户权限验证问题解决方法  回复  更多评论   

2007-06-06 19:36 by 匿名
不懂struts2,没怎么看懂,权限是在哪个action里面实现的?

# re: Struts2下的用户权限验证问题解决方法  回复  更多评论   

2007-06-08 11:34 by yidishui
没有使用过struts2,但是一直用webwork 其实两个我觉得一样!

# re: Struts2下的用户权限验证问题解决方法  回复  更多评论   

2007-06-13 22:36 by somebody(莫多泡泡)
没有目录的概念?
你说的是namespace吧。只要你设置了namespace,就只有通过你设置的namespace来访问了。eg namespace="/admin" ,action name="listUser"

那就只能通过 /admin/listUser.action来访问了。

# re: Struts2下的用户权限验证问题解决方法  回复  更多评论   

2008-07-28 14:00 by 叶依萱
没怎么看懂,你有实例代码吗,如果方便的话。我想看下,谢谢.
qq:746273084

# re: Struts2下的用户权限验证问题解决方法  回复  更多评论   

2008-10-18 17:55 by adam
interceptor 在那呀

# re: Struts2下的用户权限验证问题解决方法[未登录]  回复  更多评论   

2008-11-20 22:05 by moonandsun
可能你能帮我
加我qq :815266787
共同学习.
互相帮助.

只有注册用户登录后才能发表评论。


网站导航: