【问题标题】:session expire and back button of browser in jsp and sevlet [duplicate]jsp和servlet中浏览器的会话过期和后退按钮[重复]
【发布时间】:2012-08-22 20:11:51
【问题描述】:

可能重复:
Prevent user from going back to the previous secured page after logout

我必须创建一个带有会话的登录和注销页面。现在我必须在一定时间间隔后并单击注销按钮后使会话无效。在会话到期时间和注销操作之后,任何人都不应通过单击浏览器的后退按钮来访问以前的页面,而无需再次登录。

我怎样才能做到这一点?

【问题讨论】:

  • 您需要先尝试自己解决问题。要求完整的工作代码不是这个网站的目的。尝试重新表述您的问题并付出一些努力。

标签: jsp servlets


【解决方案1】:

web.xml文件中设置会话超时:

<session-config>
   <session-timeout>30</session-timeout> 
</session-config>

在用户登录时输入会话用户的名称:

session.setAttribute(userName, "userName");

并在用户注销时杀死它:

session.removeAttribute("userName");

创建一个过滤器来验证用户,如下所示:

public class AuthorizationFilter extends Filter {

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
                                          throws   IOException, ServletException { 

        HttpServletRequest req = (HttpServletRequest) request; 

        HttpSession session = req.getSession(); 

        String userName = (String) session.getAttribute("userName"); 

        if (userName == null) { 
           rejectRedirect();  
        } 

        chain.doFilter(request, response);  
    }

    private void rejectRedirect() {
        response.sendRedirect("/login.jsp"); // or warning page
    }
} 

并将这个过滤器映射到web.xml:

<filter> 
   <filter-name>Authorization Filter</filter-name> 
   <filter-class>yourpackage.AuthorizationFilter</filter-class> 
</filter> 
<filter-mapping> 
   <filter-name>Authorization Filter</filter-name> 
   <url-pattern>*.jsp</url-pattern> 
</filter-mapping> 

【讨论】:

  • 谢谢您,先生,您的回复,
  • 先生,我查看了您的建议,但我不知道如何在登录和注销页面中使用它。
  • 请你指导我到那里因为我没有使用这个的想法。
  • 在表单中创建提交按钮logout&lt;form action="logout.jsp"&gt;&lt;input type="submit" value="Logout"/&gt;&lt;/form&gt;。删除logout.jsp 页面上的会话属性。就应用程序架构而言,这肯定不是最好的方法。但是这样的决定对于测试应用程序是可以接受的。
  • 我相信你没有理解具体的问题。
【解决方案2】:
    public void doFilter(ServletRequest req, ServletResponse res,
            FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;

        HttpServletResponse response = (HttpServletResponse) res;

        HttpSession session = request.getSession();

        String userName = (String) session.getAttribute("loggedVendor");

        if (userName == null)
            response.sendRedirect("index.jsp");

        chain.doFilter(request, response);
    }

    public void init(FilterConfig filterConfig)
            throws ServletException {
        // We can initialize a filter using the init-params here
        // (which we defined in the deployment descriptor - web.xml)
    }

<filter>
    <filter-name>AuthorizationFilter</filter-name>
    <filter-class>AuthorizationFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>AuthorizationFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
</filter-mapping>

【讨论】:

  • @Andrey Sir 我按照你的指示做了,但页面没有重定向到登录页面
猜你喜欢
  • 2012-08-05
  • 2018-08-10
  • 2017-06-29
  • 2010-09-14
  • 2012-12-22
  • 2014-06-14
  • 1970-01-01
  • 2011-04-06
  • 2014-07-24
相关资源
最近更新 更多