成功登录后如何设置重定向?

我使用带有spring-boot-starter-security依赖项的spring boot。

如果有适当的凭据,我有一个可以成功登录的应用程序。但是,无论何时登录,我都不会被重定向到任何地方。我该如何配置?

形式如下:

 <form th:action="@{/login}" method="post">

<div><label> User Name : <input type="text" name="username"/> </label></div>

<div><label> Password: <input type="password" name="password"/> </label></div>

<div><input type="submit" value="Sign In"/></div>

</form>

我尝试更改上面的th:action标签,但无法使用它。

MvcConfig方法如下:

public void addViewControllers(ViewControllerRegistry registry) {

registry.addViewController("/login").setViewName("login");

registry.addViewController("/").setViewName("login");

}

回答:

在成功登录后定义重定向需要在Spring Security而非Spring MVC上应用。

th:action定义Spring Security的端点将处理认证请求。它没有定义重定向URL。开箱即用,Spring Boot

Security将为您提供/login端点。默认情况下,Spring

Security将在登录后重定向到您尝试访问的安全资源。如果希望始终重定向到特定的URL,则可以通过HttpSecurity配置对象强制执行该操作。

假设您使用的是Spring Boot的最新版本,则应该能够使用JavaConfig。

这是一个简单的例子:

@Configuration

@EnableWebSecurity

public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Autowired

private UserService userService;

@Override

protected void configure(HttpSecurity http) throws Exception {

// the boolean flags force the redirection even though

// the user requested a specific secured resource.

http.formLogin().defaultSuccessUrl("/success.html", true);

}

@Autowired

public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {

auth.userDetailsService(userService);

}

}

请注意,您需要定义一个适当的终结点来提供/success.htmlURL的内容。默认情况下,可用的静态资源可以src/main/resources/public/完成测试目的。我个人更希望定义一个由Thyeleaf提供内容的Spring

MVC Controller提供的安全URL。您不希望任何匿名用户都能访问成功页面。Thymeleaf是在呈现HTML内容时与Spring

Security交互的一些有用功能。

问候,丹尼尔

以上是 成功登录后如何设置重定向? 的全部内容, 来源链接: utcz.com/qa/424089.html

回到顶部