帮我用springboot生成学生宿舍管理系统判断不同角色登录功能业务逻辑代码
时间: 2024-01-17 10:06:08 浏览: 25
好的,以下是使用Spring Boot生成学生宿舍管理系统判断不同角色登录功能的业务逻辑代码:
1. 创建一个名为User的实体类,表示用户信息
```java
public class User {
private Long id;
private String username;
private String password;
private String role;
// getter and setter methods
}
```
2. 创建一个名为UserRepository的接口,继承JpaRepository接口,用于操作用户信息的数据库
```java
public interface UserRepository extends JpaRepository<User, Long> {
User findByUsername(String username);
}
```
3. 创建一个名为UserDetailsService的实现类,用于根据用户名获取用户信息
```java
@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");
}
List<GrantedAuthority> authorities = new ArrayList<>();
authorities.add(new SimpleGrantedAuthority("ROLE_" + user.getRole()));
return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), authorities);
}
}
```
4. 创建一个名为SecurityConfig的配置类,用于配置Spring Security
```java
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/student/**").hasRole("STUDENT")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/")
.permitAll()
.and()
.logout()
.permitAll();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
```
5. 在控制器中使用@PreAuthorize注解限制不同角色的访问
```java
@Controller
public class UserController {
@GetMapping("/admin")
@PreAuthorize("hasRole('ADMIN')")
public String admin() {
// 管理员界面
}
@GetMapping("/student")
@PreAuthorize("hasRole('STUDENT')")
public String student() {
// 学生界面
}
}
```
6. 创建一个名为LoginController的控制器,用于处理登录相关的请求
```java
@Controller
public class LoginController {
@GetMapping("/login")
public String login() {
return "login";
}
}
```
7. 在resources/static目录下创建一个名为login.html的登录页面
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<form action="/login" method="post">
<div>
<label for="username">Username:</label>
<input type="text" id="username" name="username">
</div>
<div>
<label for="password">Password:</label>
<input type="password" id="password" name="password">
</div>
<button type="submit">Login</button>
</form>
</body>
</html>
```
以上就是使用Spring Boot生成学生宿舍管理系统判断不同角色登录功能的业务逻辑代码。