关于权限的问题
我想实现这样一种功能:
假设网站里有三个文件夹分别为:a、b、c
用户有三个级别,分别为:1、2、3
我想让等级为1的用户只能访问a文件夹下的网页,
等级为2的用户能访问a、b文件夹
等级为3的用户能访问a、b、c文件夹
------------
目前我想到的方法是:
用户登录时将用户等级存入session,并在每一个网页中判断session,
但那样做得话,我觉得太麻烦,想用过滤器,但过滤器代码不会写,
请高人指点下,有没有好点的解决方案
------解决方案--------------------我的判断是否登陆的过滤:
//web.xml,对进入administrator文件夹下页面的用户进行过滤。
<filter>
<filter-name> AdminAuthorizationFilter </filter-name>
<filter-class> com.xy.filter.AdminAuthorizationFilter </filter-class>
<init-param>
<param-name> adminLoginFalse </param-name>
<param-value> login/index.jsp </param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name> AdminAuthorizationFilter </filter-name>
<url-pattern> /administrator/* </url-pattern>
</filter-mapping>
package com.xy.filter;
import
java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
public class AdminAuthorizationFilter
implements Filter
{
private FilterConfig config;
public AdminAuthorizationFilter()
{
}
public void init(FilterConfig config)
throws
ServletException {
this.config = config;
}
public void destroy()
{
}
public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain chain)
throws
IOException, ServletException
{
HttpServletRequest request = (HttpServletRequest)srequest;
HttpServletResponse response = (HttpServletResponse)sresponse;
HttpSession session = request.getSession(true);
if(session.getAttribute( "admin_sesion ") == null)
{
response.sendRedirect(com.sx.db.Configuration.WebAddress + config.getInitParameter( "adminLoginFalse "));
return;
} else
{
chain.doFilter(srequest, sresponse);
return;
}
}
public static void main(String args[])
{
}
}
//起始实现起来很简单,有什么不明白百渡一下吧。
------解决方案--------------------你如果用Spring的话,会很方便的!呵呵
------解决方案--------------------用filter进行过滤,写3个filter对应3种权限
------解决方案--------------------是否可以在登入的时候判断用户等级 然后session.setAttribute()最后在1个FILTER里判断?
------解决方案--------------------三个过滤器又怎么了?其实也不会很影响速度。我还加了一个全局的过滤呢·!对/*进行过滤,速度也没有感觉受什么影响。
------解决方案--------------------你可以根据三个文件夹下的文件访问对应三个大的功能模块,然后按照功能模块来划分三个不同的权限模块,用户恰好对应自己的功能权限,这样问题不就是很简单了。