import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; public class PermissionManager { private Map<String, Set<String>> rolePermissions; private Map<String, String> userRoles; public PermissionManager() { rolePermissions = new HashMap<>(); userRoles = new HashMap<>(); } public void addRole(String role) { if (!rolePermissions.containsKey(role)) { rolePermissions.put(role, new HashSet<>()); } } public void addPermissionToRole(String role, String permission) { if (rolePermissions.containsKey(role)) { rolePermissions.get(role).add(permission); } } public void assignRoleToUser(String user, String role) { userRoles.put(user, role); } public boolean hasPermission(String user, String permission) { if (userRoles.containsKey(user)) { String role = userRoles.get(user); if (rolePermissions.containsKey(role)) { return rolePermissions.get(role).contains(permission); } } return false; } public static void main(String[] args) { PermissionManager pm = new PermissionManager(); pm.addRole("admin"); pm.addRole("user"); pm.addPermissionToRole("admin", "read"); pm.addPermissionToRole("admin", "write"); pm.addPermissionToRole("user", "read"); pm.assignRoleToUser("Alice", "admin"); pm.assignRoleToUser("Bob", "user"); System.out.println("Alice has read permission: " + pm.hasPermission("Alice", "read")); // true System.out.println("Alice has write permission: " + pm.hasPermission("Alice", "write")); // true System.out.println("Bob has read permission: " + pm.hasPermission("Bob", "read")); // true System.out.println("Bob has write permission: " + pm.hasPermission("Bob", "write")); // false } }
这个示例中,我们创建了一个PermissionManager
类,用于管理用户的角色和权限。rolePermissions
是一个映射,它将角色映射到一组权限。userRoles
是一个映射,它将用户映射到他们的角色。
我们提供了以下方法:
addRole(String role)
:添加一个新角色。
addPermissionToRole(String role, String permission)
:向指定角色添加权限。
assignRoleToUser(String user, String role)
:将角色分配给用户。
hasPermission(String user, String permission)
:检查用户是否具有指定的权限。
在main
方法中,我们创建了一个PermissionManager
实例,并添加了两个角色("admin"和"user")以及一些权限,我们将这些角色分配给不同的用户,并测试它们是否具有特定的权限。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1080295.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复