建立一个权限列表,然后用Servlet 2.3规范的filter功能,
对各类文件访问和数据操作进行过滤,看下面的web.xml片段:
<filter>
<filter-name>AuthorizeFilter</filter-name>
<filter-class>com.yourname.AuthorizeFilter</filter-class>
<init-param>
<param-name>access_denied</param-name>
<param-value>/system/access_denied.jsp</param-value>
<description>access denied page </description>
</init-param>
</filter>
<filter-mapping>
<filter-name>AuthorizeFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>由于所有的<form>的action属性都是以*.do结尾的,如:
<form action="queryEmployee.do" method="post>
...
</form>
所以在servlet处理之前,请求先提交给com.yourname.AuthorizeFilter
类处理,你在该类中实现Filter接口和权限判断逻辑.当然用户必须先登录才行,你同样使用filter功能,如
com.yourname.AuthenticateFilter,该类也实现filter接口和登录判断逻辑,该类应在com.yourname.AuthorizeFilter之前,两个类实现一个
过滤链,用户的请求现由AuthenticateFilter处理,如果由于已登录,再
由AuthorizeFilter处理,如果用户有权限,则提交servlet处理。

解决方案 »

  1.   

    filter是个好方法,你也可以采用mvc模式,由于所有的提交都要经过同一个serlet做提交代理,所以可以在那个servlet中统一做权限控制
      

  2.   

    : xujiaqiang
    请问有更详细的案例么?
    最近为某机关做个类工作流的系统,对安全和权限要求很严格!所以正为权限校验的问题发愁,
    原来初步是想通过读取用户登录的session,然后在对数据库表进行的操作的bean中统一进行鉴权,通过用户Id,表格名称,操作类型和流程环节Id来判断是否可以进行相关操作。感觉这样似乎太简单,应该有些安全漏洞,请大家多提宝贵意见。万分感谢!
      

  3.   

    用户登陆、权限判断、用户日志都应该做成filter形成一条在servlet
    之前的过滤链,好处是:1、减轻了servlet的负载;2、提高灵活性,如
    果你暂时不需要任何一个filter,只需在web.xml中注释掉即可,不必改
    源码。3、复用性,filter很象一个plug-in;4、结构清晰。在用户登陆后把他的权限列表一次性取出来放在session中,理论上很简单,
    但要考虑灵活性复用性,还是要下一番工夫的。
      

  4.   

    http://www.developersbus.com:8080/%7Elightningboard/home.do看看这个
      

  5.   

    to xujiaqiang:
    请问有具体的例子么?
    我现在的项目正准备升级改造权限模块,急需此方面的知识
    QQ在线么?我的QQ: 528191  恳请赐教 ^_^
      

  6.   

    用户名+可用权限符+session+Bean