当前位置: 首页 > 面试题库 >

Java筛选器将未登录的用户重定向到登录页面

赏航
2023-03-14
问题内容

我试图制作一个过滤器来阻止未登录的用户访问某些页面。为此,我使用以下doFilter方法制作了一个过滤器类

HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
String url = request.getRequestURI();
boolean allowedRequest = false;

System.out.println(url);

if(urlList.contains(url)) {
    allowedRequest = true;
    System.out.println("in list");
}

if (!allowedRequest) {
    Object o = request.getSession().getAttribute("UserInfo");
    if (null == o) {
        System.out.println("Hey i am in");
        response.sendRedirect("/login.jsp");
    }
}

chain.doFilter(req, res);

} // end of doFilter

为了允许不需要用户登录的页面,我在init()中创建了一个arraylist url-list。

现在发生了一件非常奇怪的愚蠢的事情。假设我有两个页面home.jsp和dcr.jsp。当我尝试不登录而访问home.jsp时,我已成功重定向至login.jsp,但是当我尝试访问dcr.jsp时,尽管它进入了循环if(null
== o),但它并未重定向,我可以理解因为我正在console.This中打印该行,这是我在服务器中获得的输出这是我在服务器中获得的输出

/dcrmaintenance.jsp

Hey i am in

这告诉我null == o是正确的。

页面dcr.jsp访问一个会话对象,并且由于用户未登录,它正按预期方式获取java.lang.NullPointerException,但我不明白为什么即使进入循环后重定向仍未发生。我犯了一个错误,将不胜感激。


问题答案:

之后response.sendRedirect("/login.jsp");return;



 类似资料:
  • 记录器文件中的日志- org.springframework.Security.Access.event.loggerlistener-安全授权失败,原因是:org.springframework.Security.Access.accessdeniedexception:访问被拒绝;通过身份验证的主体:org.springframework.security.authentication.ano

  • 问题内容: 我的应用看起来像: 如果用户访问/ game下的页面并没有登录,我想将他们重定向到登录页面。 如何在所有路由器中做到优雅? 问题答案: 基本思想是使用自定义组件(在下面的示例中为PrivateRoute)包装需要身份验证的路由。PrivateRoute将使用某种逻辑来确定用户是否已通过身份验证,然后确定是否通过身份验证。允许请求的路由呈现或重定向到登录页面。 在react-router

  • 问题内容: 我想设置我的网站,以便如果用户点击该页面并且他们已经登录,它将把他们重定向到主页。如果未登录,它将正常显示。由于登录代码内置在Django中,我该怎么做? 问题答案: 我假设你当前正在使用内置的登录视图, 或你网址中的类似内容。 你可以编写包含默认视图的登录视图。它将检查用户是否已经登录,如果已经登录则重定向,否则使用默认视图。 就像是: 当然可以相应地更改你的网址:

  • 我的应用程序看起来像: 如果用户访问 /game下的页面并且没有登录,我想将他们重定向到登录页面。 如何在所有路由器中以优雅的方式进行?

  • 我正在我是身份提供者的地方实施SSO,现在我能够成功登录到服务提供者。但它把我带到了主页。我想在发布响应时指定着陆页URL。搜索了很多,但找不到任何令人信服的东西。不太知道SAML响应的哪个元素携带着陆页URL或采用我必须指定的形式。使用java和opensaml库生成响应。

  • 我将OpenId4Java与JSF应用程序一起使用,我在web.xml中添加了安全约束,如下所示。 现在,当应用程序启动并且用户希望访问 http://www.somehost:8080/myapp/core/abc.xhtml 在web.xml的帮助下,我可以向用户显示一个登录页面,现在这里我用openid登录,就像Google、Yahoo现在我的问题是,我如何告诉openid我的返回url是