用户,角色,权限的Java 代码
时间: 2024-03-03 07:49:04 浏览: 21
以下是一个基于Spring Security框架的用户、角色、权限Java代码示例,供您参考:
1. 用户实体类
```java
@Entity
@Table(name = "user")
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String password;
private boolean enabled;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))
private Set<Role> roles = new HashSet<>();
// 省略getter和setter方法
}
```
2. 角色实体类
```java
@Entity
@Table(name = "role")
public class Role implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToMany(mappedBy = "roles")
private Set<User> users = new HashSet<>();
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "role_permission", joinColumns = @JoinColumn(name = "role_id"), inverseJoinColumns = @JoinColumn(name = "permission_id"))
private Set<Permission> permissions = new HashSet<>();
// 省略getter和setter方法
}
```
3. 权限实体类
```java
@Entity
@Table(name = "permission")
public class Permission implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToMany(mappedBy = "permissions")
private Set<Role> roles = new HashSet<>();
// 省略getter和setter方法
}
```
4. 用户、角色、权限数据访问层接口
```java
public interface UserRepository extends JpaRepository<User, Long> {
User findByName(String name);
}
public interface RoleRepository extends JpaRepository<Role, Long> {
Role findByName(String name);
}
public interface PermissionRepository extends JpaRepository<Permission, Long> {
Permission findByName(String name);
}
```
5. 用户、角色、权限服务层接口和实现类
```java
public interface UserService {
User save(User user);
User findByName(String name);
}
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
@Override
public User save(User user) {
return userRepository.save(user);
}
@Override
public User findByName(String name) {
return userRepository.findByName(name);
}
}
public interface RoleService {
Role save(Role role);
Role findByName(String name);
}
@Service
public class RoleServiceImpl implements RoleService {
@Autowired
private RoleRepository roleRepository;
@Override
public Role save(Role role) {
return roleRepository.save(role);
}
@Override
public Role findByName(String name) {
return roleRepository.findByName(name);
}
}
public interface PermissionService {
Permission save(Permission permission);
Permission findByName(String name);
}
@Service
public class PermissionServiceImpl implements PermissionService {
@Autowired
private PermissionRepository permissionRepository;
@Override
public Permission save(Permission permission) {
return permissionRepository.save(permission);
}
@Override
public Permission findByName(String name) {
return permissionRepository.findByName(name);
}
}
```
6. 用户、角色、权限控制器
```java
@Controller
public class UserController {
@Autowired
private UserService userService;
@Autowired
private RoleService roleService;
@Autowired
private PermissionService permissionService;
@GetMapping("/register")
public String register() {
return "register";
}
@PostMapping("/register")
public String register(User user) {
user.setEnabled(true);
userService.save(user);
Role role = roleService.findByName("ROLE_USER");
role.getUsers().add(user);
roleService.save(role);
return "redirect:/login";
}
}
```
这只是基于Spring Security框架的一个简单示例,具体实现方式可能因不同的需求而有所差异。您可以根据自己的具体需求进行调整和扩展。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)