news 2026/5/25 0:51:41

权限模型设计完全指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
权限模型设计完全指南

权限模型设计完全指南

前言

合理的权限模型设计是系统安全的基础,本文介绍常见的权限模型及其实现。

一、权限模型

1.1 RBAC模型

┌─────────────────────────────────────────────────────┐ │ RBAC Model │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ User │─────▶│ Role │◀─────│ Permission│ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ │ │ │ │ ┌──────────────┘ │ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ ┌──────────┐ ┌──────────┐│ │ │ User-Role│ │Role-Perm ││ │ └──────────┘ └──────────┘│ └─────────────────────────────────────────────────────┘

1.2 数据模型

@Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(unique = true) private String username; private String password; @ManyToMany(fetch = FetchType.EAGER) @JoinTable( name = "user_roles", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id") ) private Set<Role> roles; } @Entity @Table(name = "roles") public class Role { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(unique = true) private String name; @ManyToMany(fetch = FetchType.EAGER) @JoinTable( name = "role_permissions", joinColumns = @JoinColumn(name = "role_id"), inverseJoinColumns = @JoinColumn(name = "permission_id") ) private Set<Permission> permissions; } @Entity @Table(name = "permissions") public class Permission { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(unique = true) private String code; private String name; private String description; }

二、权限服务

2.1 权限检查

@Service @RequiredArgsConstructor public class PermissionService { public boolean hasPermission(Authentication authentication, String permission) { if (authentication == null || permission == null) { return false; } Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities(); return authorities.stream() .anyMatch(auth -> auth.getAuthority().equals(permission) || auth.getAuthority().equals("ROLE_ADMIN")); } public boolean hasAnyPermission(Authentication authentication, String... permissions) { if (authentication == null || permissions == null) { return false; } return Arrays.stream(permissions) .anyMatch(perm -> hasPermission(authentication, perm)); } }

三、总结

RBAC模型是权限管理的基础,通过用户-角色-权限的映射关系,可以实现灵活的权限控制。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 0:33:10

Linux chmod、chown、chgrp 权限修改实战(工作必用)

前言权限不会改&#xff0c;服务器寸步难行。本篇讲三个最核心命令&#xff1a;chmod&#xff1a;改 rwx 权限chown&#xff1a;改属主、属组chgrp&#xff1a;只改属组一、chmod 修改权限1. 数字方式&#xff08;最常用&#xff09;bash运行chmod 644 文件 chmod 755 目录 chm…

作者头像 李华
网站建设 2026/5/25 0:32:59

通过curl命令快速测试Taotoken平台的大模型接口连通性

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过curl命令快速测试Taotoken平台的大模型接口连通性 在开发或调试过程中&#xff0c;有时我们需要快速验证一个API服务是否可用&…

作者头像 李华
网站建设 2026/5/25 0:32:51

工业AI预测性维护:让设备从“急诊抢救“走向“定期体检“

标签&#xff1a;预测性维护 PHM 故障诊断 RUL预测 工业AI 设备管理一、引言&#xff1a;设备的"算命先生"来了在工厂车间里&#xff0c;设备突然"罢工"的场景每天都在上演。传统维护模式就像急诊抢救——设备坏了才修&#xff0c;生产线被迫停摆&#xff…

作者头像 李华
网站建设 2026/5/25 0:32:09

好用还专业!2026 降AIGC平台测评:最新工具推荐与对比分析

2026年真正好用的AI论文降重与改写工具&#xff0c;核心看降重效果、去AI味、格式保留、学术适配四大指标。综合实测&#xff0c;千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队&#xff0c;覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 …

作者头像 李华
网站建设 2026/5/25 0:30:39

4.2 文件误删除的恢复:PE + EasyRecovery / DiskGenius 实战流程

&#x1f525;个人主页&#xff1a;杨利杰YJlio❄️个人专栏&#xff1a;《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》 《那些年未解决的Windows疑难杂症》&#x1f31f; 让复杂的事情更…

作者头像 李华
网站建设 2026/5/25 0:28:14

Web安全 - 国密 SSL / TLCP 接入手把手系列

文章目录这个系列覆盖什么系列目录本系列和已有文档的关系权威资料入口这是一套面向“从来没接过国密 SSL”的开发者写的系列博客。它以本工程 gm-ssl-client 为主线&#xff0c;先补齐 SSL/TLS、国密算法、TLCP、证书、Java Provider 等基础知识&#xff0c;再一步一步讲清楚如…

作者头像 李华