鉴权模型设计

一、RABC模型

一个非常成熟的安全模型概念,基于角色帮助我们把授权用户的访问控制。

1、User(用户)

指的是系统使用者。

2、PerMission(权限)

用户我们对系统的操作,访问哪些东西,可以操作写入操作等等。实际的例子,比如新增题目。

3、Role(角色)

我们去把一组的权限,集合起来,命名为角色。

4、总结:

核心思想祈使句就是把角色和权限做关联,实现整体的一个灵活访问,提高我们的系统的安全性和管理型。基于这个模型,我们的开发速度还有粒度的粗细也都是十分好控制的。

5、优点:

灵活,安全,简化管理。

二、RBAC-0 模型

用户和角色是一个多对多的关系,角色和权限也是一个多对多关系。

三、RBAC-1 模型

多了一个继承的概念。

比如一个业务部门,经理,主管,营业员。主管的权限肯定不能大于经理,营业员不能大于主管。

子角色的范围一定会小于父角色。

四、RBAC-2 模型

角色互斥基数约束先决条件等等。

角色互斥:同一个用户,不能被分配到复制的角色,比如说,你是一个采购,那你就不能分配销售。

基数约束:一个角色分配的用户数量是有限的。比如有一个公司的架构师,最多只能有三个。

先决条件:你 想获得架构师的角色,那你必然得先是一个资深工程师的角色。

五、权限

他的含义其实是非常广泛的,可以是菜单,页面,字段,数据。

菜单权限:

页面权限:

字段权限:

数据权限:

操作权限:

六、用户组

平台的用户基数非常大,角色也非常的多,如果说我给每个用户都操作一下角色,就非常的麻烦。我们其实抽象一层,组的概念,把同类的用户,放在一起,直接拥有相同的权限。

非常有益于减少工作量,一些管理方面也非常合适。用户组抽象到实际中,其实就是部门,科室。

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您解答这个问题。 在springboot项目中,我们可以使用责任链模式实现Filter的访问功能。具体实现步骤如下: 1. 定义一个抽象类AbstractFilter,包含一个Filter类型的成员变量nextFilter和一个抽象方法doFilter(),用于实现具体的逻辑。 ```java public abstract class AbstractFilter implements Filter { protected Filter nextFilter; public void setNextFilter(Filter nextFilter) { this.nextFilter = nextFilter; } public abstract void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException; @Override public void init(FilterConfig filterConfig) throws ServletException {} @Override public void destroy() {} } ``` 2. 定义一个具体的Filter实现类,继承自AbstractFilter,实现doFilter()方法,用于实现具体的逻辑。 ```java public class AuthFilter extends AbstractFilter { @Override public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { // 进行逻辑 boolean isAuth = checkAuth(request); if (isAuth) { // 成功,继续执行下一个Filter if (nextFilter != null) { nextFilter.doFilter(request, response, chain); } else { chain.doFilter(request, response); } } else { // 失败,直接返回错误响应 response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); response.getWriter().write("Unauthorized"); } } private boolean checkAuth(HttpServletRequest request) { // 具体的逻辑 return true; } } ``` 3. 在springboot项目中,将具体的Filter实现类注册到FilterRegistrationBean中,并指定Filter的执行顺序。 ```java @Configuration public class FilterConfig { @Bean public FilterRegistrationBean<AuthFilter> authFilter() { FilterRegistrationBean<AuthFilter> registrationBean = new FilterRegistrationBean<>(); registrationBean.setFilter(new AuthFilter()); registrationBean.addUrlPatterns("/api/*"); registrationBean.setOrder(1); // 设置执行顺序 return registrationBean; } } ``` 通过使用责任链模式实现Filter的访问功能,可以使代码更加优雅和易于维护。同时,也可以方便地扩展和修改逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值