你可以这样:将管理员页面放入WEB-INF目录下,只有使用管理员帐号登录的用户才可以通过链接或者其他方式访问管理员页面,这样如果是普通用户登录的话,他是不能通过地址栏访问到管理员页面的.也不用在每个action中都去判断.

解决方案 »

  1.   

    你应该集成一个总的action,然后所有模块的action都从他继承,这样就可以在那个总的action里做判断了。
      

  2.   

    个人认为如果你是用struts1.0做哈~哪真无办法!可以用过滤器||监听器做!如果用struts2.0就好办多了!就好上楼所讲!先生成父类action,然后所有子模块继承他!
      

  3.   


    三楼说的很正确,就把用户的相关信息存储在session中
      

  4.   

    楼上说的也对 那是那样会很烦 还不如用acegi 很多问题都可以解决了
      

  5.   

    写个filter或者用AOP,单写一个权限过滤的程序,然后在织入
      

  6.   

    如果不用struts架构的话,我建议你还是写个过滤器,这样就用不着在每一页都用session去判断了。
    给你一段过虑器代码:
    package com.filter;import java.io.IOException;import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;public class AuthFilter implements Filter { public static final String LOGIN_PAGE = "/login.jsp";
    public static final String LOGOUT_PAGE = "/Administrator/public/logout.jsp";
    public static final String[] EXCEPT_PAGE = {"LoginCheck.jsp"};
    public void destroy() { } public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
    FilterChain filterChain) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) servletRequest;
    /**
     * 如果处理HTTP请求,并且需要访问诸如getHeader或getCookies等在ServletRequest中
     * 无法得到的方法,就要把此request对象构造成HttpServletRequest
     */
    HttpServletResponse response = (HttpServletResponse) servletResponse; String currentURL = request.getRequestURI(); // 取得根目录所对应的绝对路径: HttpSession session = request.getSession(false);

    boolean bool = false;
    for (int i = 0; i< EXCEPT_PAGE.length; i++){
    if (currentURL.indexOf(EXCEPT_PAGE[i])>=0){
    bool = true;
    break;
    }
    }
    if (currentURL.indexOf(LOGIN_PAGE) == -1 && currentURL.indexOf(LOGOUT_PAGE) == -1 && currentURL.indexOf(".jsp") > -1 && !bool) {
    // 判断当前页是否是重定向以后的登录页面,如果是就不做session的判断,防止出现死循环
    String ref = request.getHeader("REFERER");  //是否是从地址栏直接输入的地址吗?
    if (session == null || session.getAttribute("USERNAME") == null || session.getAttribute("USERNAME").equals("") || (ref==null) || (ref.equals(""))) {
    response.sendRedirect(request.getContextPath()
    + LOGOUT_PAGE);
    return;
    }
    }
    // 加入filter链继续向下执行
    filterChain.doFilter(request, response);
    } public void init(FilterConfig arg0) throws ServletException { }}
    WEB-INF/web.xml加入如下代码:
    <!-- Login Check begin -->
    <filter>
    <filter-name>AuthFilter</filter-name>
    <filter-class>com.filter.AuthFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>AuthFilter</filter-name>
    <url-pattern>/Administrator/*</url-pattern>
    </filter-mapping> <!-- Login Check end-->
      

  7.   

    如果不用struts架构的话,我建议你还是写个过滤器,这样就用不着在每一页都用session去判断了。 
    上页这一句更改一下:
    不管用不用struts架构,我都建议你还是写个过滤器,因为struts2的权限只能控制.action的管不了jsp页,jsp页的权限就得用过滤器或session判断。