📜  登录重定向后的spring security - Java (1)

📅  最后修改于: 2023-12-03 14:56:26.846000             🧑  作者: Mango

登录重定向后的Spring Security - Java

在使用Spring Security进行身份验证和授权时,我们经常需要在用户成功登录后将其重定向到某个页面,例如主页。此时,Spring Security提供了有用的重定向页面选项。在本文中,我们将介绍如何使用Spring Security在用户成功登录后将其重定向到指定的页面。

准备工作

在开始之前,我们需要先添加所需的依赖项。在pom.xml文件中添加如下依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

此外,我们还需要使用Thymeleaf作为视图模板引擎。我们可以在pom.xml文件中添加如下依赖项:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
配置Spring Security

接下来,我们需要配置Spring Security来启用身份验证和授权。可以通过创建一个Java配置类来完成此操作。我们还将使用自定义登录表单和自定义用户详细信息服务。因此,在创建配置类之前,请确保已实现了这些功能。

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private CustomUserDetailsService userDetailsService;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/", "/home").permitAll()
                .anyRequest().authenticated()
                .and()
            .formLogin()
                .loginPage("/login")
                .permitAll()
                .and()
            .logout()
                .permitAll();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService);
    }
}

在上面的代码中,我们使用@EnableWebSecurity注释启用了Spring Security,并覆盖了configure(HttpSecurity http)方法来为应用程序配置HTTP安全性。我们还使用自定义用户详细信息服务,并在configure(AuthenticationManagerBuilder auth)方法中提供该服务。

在此基础上,我们需要创建自定义的登录表单。我们可以使用Thymeleaf来构建这个表单。以下是示例表单代码:

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>登录页</title>
</head>
<body>
    <div th:if="${param.error}">
        Invalid username and password.
    </div>
    <form th:action="@{/login}" method="post">
        <div>
            <label>用户名:</label>
            <input type="text" name="username" />
        </div>
        <div>
            <label>密  码:</label>
            <input type="password" name="password" />
        </div>
        <div>
            <button type="submit">登录</button>
        </div>
    </form>
</body>
</html>
配置重定向页面

现在,让我们来到本文的主题 - 在成功登录后重定向用户。为此,我们需要在configure(HttpSecurity http)方法中配置Spring Security。重定向选项是.defaultSuccessUrl()方法,如下所示:

http
    .authorizeRequests()
        .antMatchers("/", "/home").permitAll()
        .anyRequest().authenticated()
        .and()
    .formLogin()
        .loginPage("/login")
        .defaultSuccessUrl("/home")
        .permitAll()
        .and()
    .logout()
        .permitAll();

在上面的代码中,我们将defaultSuccessUrl()方法与.formLogin()方法一起使用。此时,如果用户成功登录,则将重定向到/home页面。

结论

在本文中,我们介绍了如何使用Spring Security在用户成功登录后将其重定向到指定的页面。我们还为您提供了示例代码,以便您在自己的应用程序中实现这个功能。如果您还没有在Spring Security中使用身份验证和授权,则需要优先了解相关知识点。