Spring Boot中使用Spring Security实现登录认证

健身生活志 2023-07-02 ⋅ 24 阅读

在Web应用程序中,登录认证是保护用户数据和系统安全的重要组成部分。Spring Security是一个功能强大且开发友好的框架,用于实现Web应用程序的认证和授权功能。本文将介绍如何在Spring Boot中使用Spring Security来实现登录认证功能。

添加依赖

在pom.xml文件中添加如下依赖,以集成Spring Security:

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

创建Spring Security配置类

创建一个名为SecurityConfig的配置类,并添加@EnableWebSecurity注解和继承WebSecurityConfigurerAdapter

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/login").permitAll()
                .anyRequest().authenticated()
                .and()
            .formLogin()
                .loginPage("/login")
                .defaultSuccessUrl("/home")
                .permitAll()
                .and()
            .logout()
                .logoutUrl("/logout")
                .permitAll();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
            .withUser("admin")
            .password("{noop}password")
            .roles("ADMIN");
    }
}

上述代码配置了以下内容:

  • configure(HttpSecurity http)方法配置了URL路径的访问权限和登录成功后的跳转页面。
  • configure(AuthenticationManagerBuilder auth)方法配置了一个简单的基于内存的用户认证。

创建登录页面

创建一个名为login.html的登录页面,并放置在resources/templates目录下。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
</head>
<body>
    <h2>Login</h2>
    <form th:action="@{/login}" method="post">
        <div>
            <label for="username">Username:</label>
            <input type="text" id="username" name="username" required autofocus>
        </div>
        <div>
            <label for="password">Password:</label>
            <input type="password" id="password" name="password" required>
        </div>
        <div>
            <button type="submit">Login</button>
        </div>
    </form>
</body>
</html>

创建首页

创建一个名为home.html的首页,并放置在resources/templates目录下。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Home</title>
</head>
<body>
    <h2>Welcome</h2>
    <p>You have successfully logged in.</p>
    <a href="/logout">Logout</a>
</body>
</html>

启动应用程序

创建SpringBootApplication启动类,并在main方法中运行应用程序。

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

测试登录认证

现在可以通过访问http://localhost:8080/login来访问登录页面。输入用户名admin和密码password后,点击登录按钮将会跳转到首页http://localhost:8080/home

若使用错误的用户名或密码进行登录,则会返回到登录页面,并显示错误消息。

总结

本文介绍了如何使用Spring Security在Spring Boot中实现登录认证。通过配置WebSecurityConfigurerAdapter类,并指定登录页面、成功登录后的跳转页面和认证方式,可以轻松地实现基本的登录认证功能。

参考资料


全部评论: 0

    我有话说: