建立一个权限列表,然后用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处理。
对各类文件访问和数据操作进行过滤,看下面的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处理。
请问有更详细的案例么?
最近为某机关做个类工作流的系统,对安全和权限要求很严格!所以正为权限校验的问题发愁,
原来初步是想通过读取用户登录的session,然后在对数据库表进行的操作的bean中统一进行鉴权,通过用户Id,表格名称,操作类型和流程环节Id来判断是否可以进行相关操作。感觉这样似乎太简单,应该有些安全漏洞,请大家多提宝贵意见。万分感谢!
之前的过滤链,好处是:1、减轻了servlet的负载;2、提高灵活性,如
果你暂时不需要任何一个filter,只需在web.xml中注释掉即可,不必改
源码。3、复用性,filter很象一个plug-in;4、结构清晰。在用户登陆后把他的权限列表一次性取出来放在session中,理论上很简单,
但要考虑灵活性复用性,还是要下一番工夫的。
请问有具体的例子么?
我现在的项目正准备升级改造权限模块,急需此方面的知识
QQ在线么?我的QQ: 528191 恳请赐教 ^_^