基于角色的权限设计(一)

21 篇文章 0 订阅
16 篇文章 0 订阅
在任何系统中,权限设计是最基础的东西,本文给出一个基于角色的权限设计的循序渐进的设计方案。

  在权限系统中,功能(权限)是最小的单位,比如起草新闻、编辑新闻、审核新闻、删除新闻等,而角色是一类功能的集合,比如新闻编辑这个角色,他可能有起草新闻、编辑新闻等功能集合,而责任编辑他可能就有更多的权限,比如除了新闻编辑的功能,还有审核新闻、删除新闻等功能,给张三赋予新闻编辑的角色(其实我更愿意说把张三加入到新闻编辑这个角色中去),张三就可以起草新闻、编辑新闻了,给李四赋予责任编辑的角色,李四就可以起草新闻、编辑新闻、审核新闻、删除新闻了。

  我们来看看版本一的解决方案:


 

  我们来模拟一下上面的数据:

  用户信息表:

UserID

UserName

U1

张三

U2

李四

  角色表:

RoleID

RoleName

R1

新闻编辑

R2

责任编辑

  角色用户表:

RoleID

UserID

R1

U1

R2

U2

  功能表:

FunctionID

FunctionName

F1

起草新闻

F2

编辑新闻

F3

审核新闻

F4

删除新闻

  角色功能表:

RoleID

FunctionID

R1

F1

R1

F2

R2

F1

R2

F2

R2

F3

R2

F4

  我们来看看如何判断一个用户具有某个功能权限:

  首先在用户张三登录的时候,获取张三的全部功能列表:

Select FunctionID From 角色功能表 Where RoleID In (Select RoleID From 用户角色表 Where UserID=’U 1’ )

  这样就可以得到张三的全部功能列表Functions,在起草新闻的页面我们就可以做如下判断:

Functions.Contain(‘F 1’ );//当然你可以把这个’F 1’ 定义成一个常量:NewsFunction.Draft

  如果为true就说明张三有起草新闻的权限。

  当然对于web应用,您可以把Functions session保存起来,以避免每打开一个页面都去数据库中获取。

  似乎看起来是一个不错的解决方案。

  还是新闻系统,最初新闻系统没有分类,但是随着新闻的增加,没有分类的新闻看起来总是乱的,于是张三和李四给新闻添加了分类A、分类B,还是由张三负责起草,李四负责审核,以后又添加了更多的分类,并且也增加了人手,这个时候就有新的要求出来了:希望张三只负责分类A的起草,分类B的起草交给其他人做,李四呢也只负责分类A的审核(就相当于是一个栏目的责任编辑)。

第二部分:http://tubo.cnblogs.com/archive/2005/09/02/228828.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 为了在 Vue 中设计角色权限页面,你可以使用 Vue 插件或者手写代码来实现。 1. 使用 Vue 插件:有很多现成的 Vue 插件可以用来实现角色权限管理,例如 vue-acl。 2. 手写代码:你可以手写代码来实现角色权限管理。你可以定义角色权限,并通过 Vue 路由守卫来控制页面访问权限。 不管使用哪种方式,你都需要先明确角色权限的定义,然后根据定义实现相应的代码逻辑。 ### 回答2: 基于Vue设计角色权限页面的目标是实现一个灵活可扩展的权限管理系统,用于管理不同角色对于系统功能和页面的访问权限。以下是一种可能的实现方案。 首先,我们需要设计一个角色模型,包括角色名称、角色描述和角色权限三个字段。这些角色数据可以从后端API获取,或者在前端存在一个可编辑的角色权限配置页面。 在前端页面中,我们可以使用Vue Router来管理页面路由,并通过导航守卫(Navigation Guard)来控制页面的访问权限。在导航守卫中,我们可以根据当前用户角色角色权限配置,实现对页面的权限控制。 一种简单的方案是,在每个需要权限控制的页面组件中,我们可以在创建前调用一个权限验证的方法,该方法接受当前用户角色和需要的权限作为参数。根据当前角色对应的权限配置,判断用户是否具有访问该页面的权限。如果没有权限,可以跳转到一个错误页面或者显示一个提示信息。 另外,我们可以在应用的全局状态管理(例如使用Vuex)中存储当前用户的角色信息,并在页面组件中通过计算属性或者监听器来实时更新页面的权限状态。 除了页面的访问权限控制,我们还可以设计一些可视化的界面组件,用于动态显示和编辑角色权限配置。例如,可以创建一个权限树组件,用于展示和编辑不同角色对于系统各个功能模块和页面的权限。用户可以通过该组件进行权限的增删改查操作,从而实现角色权限的灵活管理。 总的来说,基于Vue设计角色权限页面可以通过设计角色模型、使用导航守卫控制访问权限、使用全局状态管理来实现页面权限的控制和灵活管理。 ### 回答3: 基于Vue设计角色权限页面可以采用以下步骤: 首先,我们需要定义不同的用户角色和对应的权限。根据实际需求,可以将用户分为不同的角色,如普通用户、管理员、超级管理员等,并为每个角色分配不同的权限。 接下来,我们可以使用Vue框架来实现角色权限页面。Vue提供了许多便捷的工具和组件,使得前端开发更加高效。我们可以使用Vue Router来管理页面的路由,Vuex来进行状态管理,同时结合Element UI等UI库来实现界面的快速开发。 在设计角色权限页面时,首先需要登录到系统。登录成功后,后台会返回当前用户所拥有的角色和对应的权限信息。前端可以将这些权限信息保存在Vuex中,以便全局访问。 在前端页面中,根据用户的角色权限信息,可以动态生成菜单和路由。不同的角色可能拥有不同的菜单和页面访问权限,因此需要根据用户的角色来展示相应的页面。在Vue中,我们可以通过遍历权限信息来生成对应的菜单和路由,同时可以通过v-if指令来控制页面元素的显示与隐藏。 此外,我们可以使用Vue Router的导航守卫来进行权限验证,确保用户只能访问其拥有权限的页面。在导航守卫中,可以根据用户的角色权限信息进行判断,如果用户没有访问权限,则将其重定向到其他页面或显示提示信息。 综上所述,基于Vue设计角色权限页面需要定义角色权限信息,使用Vue框架进行页面开发,动态生成菜单和路由,并结合导航守卫进行权限验证,以实现对不同用户角色权限控制。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值