sptingsecurity小程序登录
时间: 2023-06-21 18:04:43 浏览: 59
Spring Security 是一个强大的安全框架,可以帮助我们实现各种认证和授权功能。下面是一个简单的 Spring Security 小程序登录的示例:
1. 引入 Spring Security 依赖
在 pom.xml 文件中添加以下依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
```
2. 配置 Spring Security
在 Spring Boot 应用中,可以通过编写一个 `WebSecurityConfigurerAdapter` 类来配置 Spring Security。示例代码如下:
```
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsServiceImpl userDetailsService;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/login").permitAll()
.antMatchers("/api/**").authenticated()
.and()
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/index")
.failureUrl("/login?error")
.permitAll()
.and()
.logout()
.permitAll();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(new BCryptPasswordEncoder());
}
}
```
上述代码中,我们定义了以下配置:
- `/login` 请求不需要认证
- `/api/**` 请求需要认证
- 配置了登录页面、登录成功后跳转的页面、登录失败后跳转的页面和退出登录的 URL
- 配置了用户认证方式为使用 `UserDetailsService`,并且使用了 BCryptPasswordEncoder 对密码进行加密
3. 实现 UserDetailsService 接口
在上面的配置中,我们使用了 `UserDetailsService` 来获取用户信息。我们需要实现这个接口,并且重写 `loadUserByUsername` 方法来根据用户名获取用户信息。
示例代码如下:
```
@Service
public class UserDetailsServiceImpl implements UserDetailsService {
@Autowired
private UserRepository userRepository;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
User user = userRepository.findByUsername(username);
if (user == null) {
throw new UsernameNotFoundException("User not found");
}
return new org.springframework.security.core.userdetails.User(user.getUsername(),
user.getPassword(), Collections.singletonList(new SimpleGrantedAuthority("USER")));
}
}
```
上述代码中,我们通过 UserRepository 获取用户信息,然后返回一个实现了 `UserDetails` 接口的对象。
4. 编写登录页面
最后,我们需要编写一个登录页面来进行登录。示例代码如下:
```
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login Page</title>
</head>
<body>
<h1>Login Page</h1>
<form action="/login" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="username"><br>
<label for="password">Password:</label>
<input type="password" id="password" name="password"><br>
<input type="submit" value="Login">
</form>
</body>
</html>
```
在这个页面中,我们使用了一个表单来进行登录,表单的 `action` 属性是 `/login`,这个路径对应了 Spring Security 配置中的登录 URL。
至此,一个简单的 Spring Security 小程序登录就完成了。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)