当前位置: 首页 > 知识库问答 >
问题:

Spring boot Security总是重定向到home.jsp

庾兴发
2023-03-14

目前,我正在使用Spring Boot 1.4.0版本进行开发,使用Spring security进行身份验证。要求是当用户第一次登录时,需要重定向到密码重置页面,否则应该重定向到主页。应用程序总是重定向home.jsp,而与成功处理程序中配置的url无关。

WebSecurityConfiguration

          html" target="_blank">http.authorizeRequests()
         .antMatchers("/resources/**","/rest/**","/log*")
         .permitAll()
         .antMatchers("/admin**").hasAuthority("admin") 
         .anyRequest()
         .authenticated()
         .and()
         .formLogin()
         .loginPage("/login")
         .successHandler(authHandler)
         .failureHandler(authFailureHandler)
         .usernameParameter("username").passwordParameter("password")
         .permitAll()
         .and()
         .logout()
         .invalidateHttpSession(true)
         .logoutSuccessUrl("/login?logout")
         .permitAll()
         .and()
         .csrf().disable(); 

公共类AuthSuccessShandler扩展了SimpleUrlAuthenticationSuccessShandler{

private RedirectStrategy redirectStrategy = new DefaultRedirectStrategy();
@Override
protected void handle(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException {
    HttpSession session = request.getSession(false);
    String isFirstTimePwd = String.valueOf(session.getAttribute("IsFirstTimeLogIn"));
    if (isFirstTimePwd.equalsIgnoreCase("true"))
    {
        redirectStrategy.sendRedirect(request,response,"/firstTime");
    }
    else
    {
        redirectStrategy.sendRedirect(request, response, "/home");
    }
}

}

@RequestMapping(value = "/firstTime", method = RequestMethod.GET)
public String displayFirstTimeLoginPage(HttpServletRequest request,HttpServletResponse response) {
    return "firstTime";
}

@RequestMapping(value = "/home", method = RequestMethod.GET)
public ModelAndView homePage(HttpServletRequest request,HttpServletResponse response) {
    HttpSession  session = request.getSession();
    User user =(User)  session.getAttribute("User");
    return new ModelAndView("home", "loggedInUser", user);
}

此外,我还尝试通过重写onAuthenticationsuccess()来实现AuthenticationSuccessShandler,但仍然重定向home.jsp而不是密码重置页面。

共有1个答案

钦永贞
2023-03-14

你最好去主页测试一下这是不是第一次

@RequestMapping(value = "/home", method = RequestMethod.GET)
    public ModelAndView homePage(HttpServletRequest request,HttpServletResponse response) {

    if (isFirstTimePwd.equalsIgnoreCase("true"))
        {
            redirectStrategy.sendRedirect(request,response,"/firstTime");
        }

        HttpSession  session = request.getSession();
        User user =(User)  session.getAttribute("User");
        return new ModelAndView("home", "loggedInUser", user);
    }

编辑1:

@RequestMapping(value = "/home", method = RequestMethod.GET)
        public ModelAndView homePage(HttpServletRequest request,HttpServletResponse response) {

         HttpSession  session = request.getSession();
            User user =(User)  session.getAttribute("User");
        if (isFirstTimePwd.equalsIgnoreCase("true"))
            {
                 return new ModelAndView("firstTime", "loggedInUser", user);
            }

            return new ModelAndView("home", "loggedInUser", user);
        }
 类似资料:
  • 我在设置从8080到端口443的重定向时遇到问题。 场景如下:我有一个负载均衡器,监听端口80和443。对端口80的所有请求都转发到负载均衡器后面主机上的端口8080。对端口443的所有请求都转发到负载均衡器后面主机上的端口8443。 请求端口时http://address.com,它在负载平衡器上使用端口80,在主机上使用端口8080,这里一切正常。 重定向现在应指向https://addres

  • 我写了一个注销函数,简单地从数据库中删除所有必要的信息后,我清除会话和重定向注销。我想将用户重定向到主页(登陆页面),这在另一个功能中是登录(成功登录后,我会重定向到主页)。在我的代码中是这样做的: 路线。php有以下途径: 正如我在登录时所说的那样,我以前也这样做过,但它确实起了作用,但这里的意思是: 下面是包含重定向的登录部分的外观: 请支持并让我知道为什么它可以一次又一次地工作,尽管这两个方

  • 下面是Spring Securityxml 当我提交表单时,即使我输入了正确的用户名和密码,它也会被重定向到url“http://localhost:8080/securitytest/login?authfailed”。

  • 我试过所有的解决办法。我面临两个问题: 注销重定向到无效会话URL 即使在应用程序注销时,会话超时事件仍会在每个设置的时间间隔(例如10分钟)重复发生。这会导致登录页提交操作(登录按钮)重定向到无效会话URL。因此,如果我注销,并尝试在10分钟后登录(这是会话超时间隔),登录页面将再次重定向到login?logout=1(invalid-session-url),而不是登录应用程序。之后,我就可以

  • 我已经在Wildfly16应用服务器中配置了Spring security 5.1.6。对于注销,我做了如下配置; 当我使用HTTP网址时,没有问题。但是,当我使用HTTPS网址时,在单击注销链接后,它会重定向到“注销成功网址”中配置的相对路径,协议为HTTP而不是HTTPS。 我已经尝试使用"

  • 我第一次在设置simpleSAMLphp服务提供商时遇到了一些麻烦。 我将服务提供商配置为: 我还配置了身份提供者,它似乎工作正常。但是,当用户从idp重定向回simpleSAMLphp时,将显示simpleSAMLphp安装页面(其中包含一些测试工具)。 我的测试使用以下代码: 当我尝试使用“测试配置的身份验证源”工具登录时,我也会返回安装首页,而不是我应该获得的属性概述。 我试图检查idp发送