前两天刚好写了一篇blog关于这个问题的用struts (webwork) 的action配置文件和ant进行权限配置

解决方案 »

  1.   

    对URL进行控制,就算他知道别的URL,没有权限,也访问不了
      

  2.   

    我解决这个问题是在Action中对每一个Action方法进行URL的判定控制
      

  3.   

    对每一个操作都要检查权限的,用filter吧,或者action也可以。
    权限是要每处都判断的,不只是登陆时判断。
      

  4.   

    说到权限的问题,我建议你看看ACL或者RBAC相关的资料。
    如果你还没有开始实现你的系统,那么在开始之前就要设计好权限相关的模块和控制的模式,如果你已经有一个现成的系统,那么最好也整理一下你现有的系统,把需要管理和限制的东西分类,并查找规律。>>对于第一个问题:关于怎么限制用户非法登陆。
    这个其实不难,只要做一个session控制,对每一个session做合法验证就可以了>>第二个问题是 如果一个公司内部的员工用自己的账号登陆进去了,他知道别人的操作页面地址(它自己由于权限不够访问不到的页面)。怎么样来限制,使它不能操作没有权限访问的界面
    这就是要控制URL了,最好是对这种页面做一个分类(可以按角色或者功能模块),然后在访问的地方增加逻辑控制。比如可以扩展struts里的controller,增加自己的控制逻辑,这样对所有的链接访问都能控制了。
      

  5.   

    public void doFilter(ServletRequest arg0, ServletResponse arg1,
    FilterChain chain) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) arg0;
    String uri = request.getRequestURI();
    if (uri.indexOf("loginAction_operateBeforeLogin.action")>0
    ||uri.indexOf("loginAction_login.action") > 0
    || uri.indexOf("loginAction_logout.action") > 0
    ||uri.indexOf("loginAction_searchCounterInfoByUserIdAndPwd.action")>0
    ||uri.indexOf("loginAction_updateUserPwd.action")>0)
    {
    // TODO:do nothing currently
    } else if (uri.indexOf(".action") >= 0) {
    HttpSession session = request.getSession(true);
    if (session == null) {
    if (log.isDebugEnabled()) {
    log.debug("session invalid");
    }
    // System.out.println("session invalid");
    } else {
    if (log.isDebugEnabled()) {
    log.debug("session valid:" + session.getId());
    }
    } if (session.getAttribute("userInfo") == null) {
    HttpServletResponse response = (HttpServletResponse) arg1;
    response.sendRedirect(request.getContextPath() + "/login.jsp");
    return;
    } else {
    }
    }
    super.doFilter(arg0, arg1, chain);
    }
      

  6.   

    我喜欢用Spring的AOP方式来做:
    http://howsun.blog.sohu.com/106725713.html