目前,我正在使用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而不是密码重置页面。
你最好去主页测试一下这是不是第一次
@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发送