Vue-element-admin: 大神,您好,可以做到权限可视化配置吗?

Created on 22 Jul 2018  ·  12Comments  ·  Source: PanJiaChen/vue-element-admin

实际项目中权限分配不应该写死,还是应该从后台传过来权限,动态生成asyncRouterMap,因为无论前端做任何操作,最终还是需要后端进行权限判断

PR Welcome RFC

Most helpful comment

我快完成第三版的权限管理系统(Token Server)了,到时候可以分享一下,PR可能有点困难,因为牵扯到后端太多东西,而且后端是.Net的Web Api写的,不一定符合很多人的需求。

大致思路是这样的:

实现OAuth 2 的Resource Own Password Credential Grant Flow和Client Credential Grant Flow,主要是为了SPA和Mobile Client Issue Token,Refresh Token以及Web API的保护。支持多客户端,多应用。

实体基本分为:

  • App相关:App, Role, Resource, Operation, Permission, Menu
  • OAuth相关:Client, Scope

  • App里可以定义多个Role

  • 一个Role有一组Permission
  • 每个Permission由 Resource + Operation 组合 (例如 User + View,或者User + Edit)
  • Role和Menu为多对多关系

前端登陆以后,请求到后端签发的Access Token (Token Type = JWT),Token里有当前用户的Role,通过当前用户的Role从后端请求一组Menu,从而实现菜单根据Role加载。

在后端每一个Action上都用Attribute标记访问权限例如 [ClaimPrinciple(Operation="View", Resource="User")],这样的话,就可以动态配置各种Role的Permission组合。

有兴趣欢迎探讨,谢谢。
image 1

All 12 comments

还是需要看需求的,每个业务都是不一样的。

因为无论前端做任何操作,最终还是需要后端进行权限判断

后端和前端判断的权限本来就不是一个东西。

本项目暂时应该不会加权限可视化配置,欢迎pr。

我快完成第三版的权限管理系统(Token Server)了,到时候可以分享一下,PR可能有点困难,因为牵扯到后端太多东西,而且后端是.Net的Web Api写的,不一定符合很多人的需求。

大致思路是这样的:

实现OAuth 2 的Resource Own Password Credential Grant Flow和Client Credential Grant Flow,主要是为了SPA和Mobile Client Issue Token,Refresh Token以及Web API的保护。支持多客户端,多应用。

实体基本分为:

  • App相关:App, Role, Resource, Operation, Permission, Menu
  • OAuth相关:Client, Scope

  • App里可以定义多个Role

  • 一个Role有一组Permission
  • 每个Permission由 Resource + Operation 组合 (例如 User + View,或者User + Edit)
  • Role和Menu为多对多关系

前端登陆以后,请求到后端签发的Access Token (Token Type = JWT),Token里有当前用户的Role,通过当前用户的Role从后端请求一组Menu,从而实现菜单根据Role加载。

在后端每一个Action上都用Attribute标记访问权限例如 [ClaimPrinciple(Operation="View", Resource="User")],这样的话,就可以动态配置各种Role的Permission组合。

有兴趣欢迎探讨,谢谢。
image 1

我快完成第三版的权限管理系统(令牌服务器)了,到时候可以分享一下,PR可能有点困难,因为牵扯到后端太多东西,而且后端是.Net的Web Api写的,不一定符合很多人的需求。

大致思路是这样的:

实现OAuth 2的资源自己的密码凭证授权流和客户端凭据授权流程,主要是为了SPA和移动客户端问题令牌,刷新令牌以及Web API的保护。支持多客户端,多应用。

实体基本分为:

  • App相关:App,角色,资源,操作,权限,菜单
  • OAuth相关:客户,范围
  • 应用程序里可以定义多个角色
  • 一个角色有一组权限
  • 每个权限由资源+操作组合(例如用户+查看,或者用户+编辑)
  • 角色和菜单为多对多关系

前端登陆以后,请求到后端签发的访问令牌(令牌类型= JWT),令牌里有当前用户的角色,通过当前用户的角色从后端请求一组菜单,从而实现菜单根据角色加载。

在后端每一个Action上都用属性标记访问权限例如[ClaimPrinciple(Operation =“View”,Resource =“User”)],这样的话,就可以动态配置各种Role的Permission组合。

有兴趣欢迎探讨,谢谢。
图片1
弱弱问下你这个根据role请求回来的菜单是在这个模版的基础上渲染的吗还是重写的sidebar组件啊

@oiovwv 可以复用一部分,不过逻辑要修改的

@issuehuntfest has funded $20.00 to this issue. See it on IssueHunt

没空整理,简单提示下,希望有帮助。改几个核心地方就可以了:

  1. store/modules/permission.js
function hasPermission(permissions, route) {
  if (route.meta && route.meta.permissions) {
    return route.meta.permissions.every(permission => permissions.includes(permission))
  } else {
    return true
  }
}

前提是服务器端加个获取用户permission的接口,如果需要结合role来一起过滤的话就在接口里一起返回

  1. 在router.meta里加个permissions:['p-xxx', 'p-yyy']来描述所需权限

https://github.com/PanJiaChen/vue-element-admin/pull/1605
已添加

在线demo

之后会添加服务端返回demo

服务端返回动态路由有没有做呢?

关注,希望大神有空做一下服务端返回动态路由,大神辛苦

1605

已添加

在线demo

之后会添加服务端返回demo

大神,目前你这个只是本地的权限可视化且没有三级目录,目前我加了后好像三级遍历出现问题。是要在role.vue里面的方法进行改造吗?

1605

已添加

在线demo

之后会添加服务端返回demo
请问一下 服务端返回的demo有了吗?

1605

已添加
在线demo
之后会添加服务端返回demo

大神,目前你这个只是本地的权限可视化且没有三级目录,目前我加了后好像三级遍历出现问题。是要在role.vue里面的方法进行改造吗?

已经解决了,路由上添加alwaysShow:true 即可,这个字段隐藏了路由根节点

Was this page helpful?
0 / 5 - 0 ratings