封装了一个指令权限,能简单快速的实现按钮级别的权限判断。v-permission(opens new window)

使用权限字符串 v-hasPermi

// 单个
<el-button v-hasPermi="['system:user:add']">存在权限字符串才能看到</el-button>
// 多个
<el-button v-hasPermi="['system:user:add', 'system:user:edit']">包含权限字符串才能看到</el-button>

使用角色字符串 v-hasRole

// 单个
<el-button v-hasRole="['admin']">管理员才能看到</el-button>
// 多个
<el-button v-hasRole="['role1', 'role2']">包含角色才能看到</el-button>

这是官方给的使用文档

这里做下说明:

首先角色字符串很好理解首先角色字符串很好理解

如下图就是给角色配置的权限字符

使用v-hasRole判断当前角色是否满足条件即可

其次是不好理解的权限字符,这里的权限字符是菜单管理里面配置给页面或者是按钮的权限字符。

这里将页面或者按钮配置上权限字符。

在角色管理的修改中可以配置菜单或者按钮,也就是将这些页面和按钮的权限字符分配给角色。

在项目中初始会调用获取权限字符接口,用户会拿到自己的所有权限字符(getInfo()里的permissions就是权限字符数组)。

//这是获取登录人权限标识的sql
SELECT DISTINCTm.perms
FROMsys_menu mLEFT JOIN sys_role_menu rm ON m.menu_id = rm.menu_idLEFT JOIN sys_user_role ur ON rm.role_id = ur.role_idLEFT JOIN sys_role r ON r.role_id = ur.role_id
WHEREm.STATUS = '0' AND r.STATUS = '0' AND ur.user_id = #{userId}

最后在前端中使用v-hasPermi指令就可以判断当前登录人权限字符中是否包含某些特定的权限字符,就可以判断是否展示使用指令的组件。

前面提到的是前端中的提现,下面说下后端的使用:

在Controller接口上使用@PreAuthorize注解。

权限方法

@PreAuthorize注解用于配置接口要求用户拥有某些权限才可访问,它拥有如下方法

方法 参数 描述
hasPermi String 验证用户是否具备某权限
lacksPermi String 验证用户是否不具备某权限,与 hasPermi逻辑相反
hasAnyPermi String 验证用户是否具有以下任意一个权限
hasRole String 判断用户是否拥有某个角色
lacksRole String 验证用户是否不具备某角色,与 isRole逻辑相反
hasAnyRoles String 验证用户是否具有以下任意一个角色,多个逗号分隔

使用示例

其中@ss代表的是PermissionService (opens new window)服务,对每个接口拦截并调用PermissionService的对应方法判断接口调用者的权限。

  1. 数据权限示例。
// 符合system:user:list权限要求
@PreAuthorize("@ss.hasPermi('system:user:list')")// 不符合system:user:list权限要求
@PreAuthorize("@ss.lacksPermi('system:user:list')")// 符合system:user:add或system:user:edit权限要求即可
@PreAuthorize("@ss.hasAnyPermi('system:user:add,system:user:edit')")
  1. 角色权限示例。
// 属于user角色
@PreAuthorize("@ss.hasRole('user')")// 不属于user角色
@PreAuthorize("@ss.lacksRole('user')")// 属于user或者admin之一
@PreAuthorize("@ss.hasAnyRoles('user,admin')")

权限提示

超级管理员拥有所有权限,不受权限约束。

公开接口

如果有些接口是不需要验证权限可以公开访问的,这个时候就需要我们给接口放行。

使用注解方式,只需要在Controller的类或方法上加入@Anonymous该注解即可

// @PreAuthorize("@ss.xxxx('....')") 注释或删除掉原有的权限注解
@Anonymous
@GetMapping("/list")
public List<SysXxxx> list(SysXxxx xxxx)
{return xxxxList;
}

目前数据权限还没有使用过,以后会慢慢学习,一起交流···

记录一下若依权限的使用相关推荐

  1. Google Play通话记录和短信权限使用限制

    前段时间Google Play应用中心收到了限期整改通知,记录一下之前权限适配的问题,防止后面新开项目忘记此限制. Google Play在Facebook泄密丑闻之后收紧对应用获取隐私权限的限制,凡 ...

  2. linux ubuntu安装pytorch(深度学习环境搭建记录,无sudo权限)踩坑全记录

    一些牢骚:深度学习没怎么学习几次,搭建环境已经把我搞秃了哈哈哈. 之前在网上找到的搭建环境的步骤,我没有root权限,很多操作都不行(比如运行.run文件,cuda 和cudnn的安装和修改也需要ro ...

  3. 【Linux学习记录】Linux文件属性权限、目录管理

    1.linux 文件属性 r:4 w:2 x:1 rwz表示可读可写可执行 [root@vbird ~]# ls -al #列出所有的文件包括隐藏文件 下面显示的内容中第一个字符表示该文件为什么属性 ...

  4. 生产中NFS案例记录---写入权限解决过程

        生产中NFS案例记录---写入权限解决过程 NFS配置要求: 1. 将oracle文件写入到NFS Server端,注意权限要与oracle端一致. 2. Oracle端目录文件所属用户为or ...

  5. 通用数据级别权限的框架设计与实现(4)-单条记录的权限控制

    查看上篇文章通用数据级别权限的框架设计与实现(3)-数据列表的权限过滤,我们开始在原来的基础上实现单条权记录的权限控制. 相信前面的列表权限控制,很多系统都可以做到,但如何在上面列表的权限过滤中实现通 ...

  6. 记录新电脑的node,vue配置和管理员权限的问题

    tips:本文记录自己解决win10权限问题的过程,繁琐,勿喷,日后会改为详细处理过程. 一,问题描述 买了一台笔记本,机械革命深海泰坦x8 pro,买来后重装了win10专业版系统,用自己的kms服 ...

  7. 系统权限管理设计 (转:http://blog.csdn.net/chexlong/article/details/37697555)

    权限设计(转:http://blog.csdn.net/chexlong/article/details/37697555)      1. 前言:      权限管理往往是一个极其复杂的问题,但也可 ...

  8. Android 6.0 运行时权限处理完全解析

    一.概述 随着Android 6.0发布以及普及,我们开发者所要应对的主要就是新版本SDK带来的一些变化,首先关注的就是权限机制的变化.对于6.0的几个主要的变化,查看查看官网的这篇文章http:// ...

  9. 查看MYSQL数据库中所有用户及拥有权限

    查看MYSQL数据库中所有用户 mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM m ...

最新文章

  1. Awcing算法--双指针
  2. C++ 命名空间解释
  3. 安卓SurfaceFlinger框架初探
  4. 初识Ajax以及简单应用
  5. 构件图(Component Diagram)
  6. Java管理Cookie增删改查操作
  7. hyperion高光谱参数_[ENVI] 珠海一号高光谱数据处理
  8. 迁移学习 nlp_NLP的发展-第3部分-使用ULMFit进行迁移学习
  9. Web安全之拖放劫持
  10. 求最长不下降序列(信息学奥赛一本通-T1259)
  11. 产业链人士:LCD显示驱动芯片价格有望趋于稳定
  12. DFS--01背包问题
  13. 和菜鸟一起学linux总线驱动之初识spi驱动数据传输流程【转】
  14. List of X$ Tables and how the names are derived
  15. 微信公众号自动发布文章
  16. 最新Android开发视频教程 Android Studio教程(2017-2018-2019)
  17. linux geos 动态库,geos库win64版本编译
  18. HTML超大图片加载显示解决方案--图片切割转换成瓦片地图(BaiduMapTileCutter)
  19. [转]大连金州不相信眼泪
  20. neo4j安装详细步骤(小白版)

热门文章

  1. mysql 导出数据到excel_怎样将MySQL数据导出到Excel表中
  2. 澳门流感病人比例处高位 卫生局:暂不全面停课
  3. ZBar 支持i386 armv6 armv7 armv7s x86_64 arm64
  4. [gtalk]gtalk机器人
  5. nginx代理gitlab
  6. 包职院计算机专业代号,高职专业代码查询2017
  7. 计算机联机玩游戏的操作方法,茶杯头大冒险怎么联机 茶杯头大冒险游戏联机方法介绍-游侠网...
  8. div view 中文字垂直居中
  9. Oracle如何更改端口号
  10. mysql federated 配置,mariadb下配置federated,mariadbfederated