文章回顾:

  • Spring Security(一):整合JWT实现登录功能
  • Spring Security(二):获取用户权限菜单树
  • Spring Security(三):与Vue.js整合
  • Spring Security(四):更新前端路由获取方式

1、每次请求时,都会带有tokenSpring Security会根据token判断用户信息,进行授权。
2、对于接口权限的控制,我们可以用过使用SpringEL表达式配合@PreAuthorize("hasAnyRole('ADMIN')")注解来对接口进行权限控制,这段注解表示,只有当前用户的角色为ADMIN的时候,Spring Security才会放行。注意:建议使用ROLE_*的方式存放在数据库中用来规定角色名。

    @PreAuthorize("hasAnyRole('ADMIN')")@RequestMapping(value = "/getRoleList",method = RequestMethod.POST)public RetResult getRoleList(@RequestBody  Map<String,Object> map){//...}

Example

使用本系统的系统管理员和测试用户分别使用Postman测试,这是测试用户访问进行访问时,会抛出AccessDeniedException权限不足。

使用系统管理员测试结果,可以访问接口获取数据。

前端权限控制

1、由于本系统采用的是动态加载路由,所以如果当前用户的路由列表中没有你所输入访问的会转到404页面。
2、自定义权限判断方法。配合v-if指令来进行验证。

创建srcutilspermission.js

    import store from '@/store'export default function hasPermission(value) {if (value && value instanceof Array && value.length > 0) {const roles = store.getters && store.getters.rolesconst permissionList = valueconst isPermission = roles.some(role => {return permissionList.includes(role.rolename)})if (!isPermission) {return false}return true} else {this.$message({message: '需要角色权限列表',type: 'error'})return false}}

解释一下:就是从Vuex中拿到角色,然后与页面中定义的权限角色进行判断,如果包含的话就可以访问。

    <template slot-scope="scope"><el-popover//在这里使用v-if进行判断就行v-if="hasPermission(['ROLE_ADMIN'])":ref="scope.row.id"placement="top"width="180"><p>确定删除本条数据吗?</p><div style="text-align: right; margin: 0"><el-button size="mini" type="text" @click="$refs[scope.row.id].doClose()">取消</el-button><el-button :loading="delLoading" type="primary" size="mini" @click="subDelete(scope.row.id)">确定</el-button></div><el-button slot="reference" :disabled="scope.row.id === 1" type="danger" size="mini">删除</el-button></el-popover></template>...<script>import hasPermission from '@/utils/permission'...methods: {hasPermission,}

这样可以对按钮,或者页面中的一部分页面进行权限控制了~

GitHub分页插件

再说一下Spring Boot中使用Github的分页插件
1、首先引入依赖

    <!--github分页插件--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.2.3</version></dependency>

2、在application.yml中配置PageHelper如下

    pagehelper:helperDialect: mysqlreasonable: truesupportMethodsArguments: trueparams: count=countSql

3、建议封装一个PageUtil,原因是通常Vue前端分页需要我们传递当前页:pageNum,页大小:pageSize,总数量pageTotal等参数。

    package com.example.security.util;import com.github.pagehelper.Page;import lombok.Data;import java.util.List;/*** @Autoor:杨文彬* @Date:2019/1/21* @Description:*/@Datapublic class PageUtil {private Integer pageCur;private Integer pageSize;private Integer rowTotal;private Integer pageTotal;private List data;public PageUtil(Page page,List data) {this.pageCur = page.getPageNum();this.pageSize = page.getPageSize();this.rowTotal = page.getPages();this.pageTotal = Integer.valueOf((int)page.getTotal());this.data = data;}}

返回数据的格式

然后在前端渲染数据就ok了。目前做了角色管理页面,其中也对角色操作一栏使用hasPermission进行了权限控制。代码已经同步到Github上了,如果你有任何的建议欢迎联系我~

欢迎关注我的个人微信公众号~

spring boot security 权限用postman测试_Spring Security(五):前后端权限控制详解相关推荐

  1. 【Postman知识分享】Postman测试下载文件和上传文件(图文详解)

    [辰兮要努力]:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端.后台.数据 ...

  2. Spring Boot微服务的黑匣子测试是如此简单

    当我需要进行原型设计,概念验证或在空闲时间使用一些新技术时,开始新项目对于Maven来说总是有点烦人. 不得不说,设置Maven项目并不难,您可以使用Maven原型. 但是原型通常是过时的. 谁想玩旧 ...

  3. SpringBoot 系列教程(八十五):Spring Boot使用MD5加盐验签Api接口之前后端分离架构设计

    加密算法参考: 浅谈常见的七种加密算法及实现 加密算法参考: 加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用 目的: 通过对API接口请求报文签名,后端进行验签处理, ...

  4. Linux用户、权限及改变文件所有者及文件所属组多例详解 附python代码

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究) Linux用户.权 ...

  5. 学习Spring Boot:(十)使用hibernate validation完成数据后端校验

    前言 后台数据的校验也是开发中比较注重的一点,用来校验数据的正确性,以免一些非法的数据破坏系统,或者进入数据库,造成数据污染,由于数据检验可能应用到很多层面,所以系统对数据校验要求比较严格且追求可变性 ...

  6. springboot拦截html页面元素,Spring Boot 中如何使用拦截器(十五)

    关于拦截器,大家一定都不陌生,spring boot 中是如何使用拦截器的呢?今天就举个例子,来给大家说明一下,废话不多说,开始撸代码!!! 1.创建一个新的spring boot项目,并引入相应的j ...

  7. spring boot 1.5.4 整合webService(十五)

    Spring Boot整合web service 经验引用 之前用webservice的CXF框架, 很方便与简洁,但是悲催的是在部署到生产环境的WebSphere(was平台)下后,不能正常运行. ...

  8. java局部网内通话杂音_在Spring Boot反应式Web应用程序上启用SSL,并在控制台中对该打印进行http调用时出现异常噪音...

    在我创建了我的spring boot反应式Web应用程序以支持SSL之后,当我尝试对服务器进行http调用时,它会在控制台中的异常跟踪下面打印 . 作为应用程序所有者,我无法阻止任何人使用我的服务 . ...

  9. Spring Boot @PropertySource注解加载指定配置文件(五)

    我们可以通过@ConfigurationProperties和@Value两个注解获取主配置文件application.properties 或 apllication.yml中的配置信息,但是如果我 ...

最新文章

  1. ThreadLocal使用
  2. Python处理脑电--Epochs数据可视化
  3. 网络适配器无法建立连接_「图」KB4515384更新令人抓狂:网络适配器又无法启用...
  4. POJ 1091 跳蚤
  5. BZOJ.2738.矩阵乘法(整体二分 二维树状数组)
  6. 安卓开发 xml添加滑动条
  7. python判断整数是否对称_刷题系列 - Python判断是否镜像对称二叉树
  8. csdn下载分获取方法
  9. win7 win10 配置共享文件夹
  10. 大厂年薪几十万,但是5-8年外包程序员,年薪是多少你知道吗?
  11. 把一个人的特点写具体作文_把一个人的特点写具体作文400字
  12. 2.jQuery常见API
  13. 【初学音频】Android的Audio系统之AudioFlinger
  14. Intelligent Reflecting Surface Assisted Secrecy Communication via Joint Beamforming and Jamming
  15. Unity3D插件 Doozy UI 学习(一):打开一个面板
  16. 访问局域网另外一台电脑虚拟机中CentOS7
  17. TwinCAT3读取CSV文件
  18. OpenMesh-网格光顺的算法
  19. java实现抛物线轨迹计算_JavaFX中抛物线轨迹的时间线
  20. 计算机网络——常考的面试题

热门文章

  1. 记录no static method cannot be reference
  2. Oulipo (KMP出现次数)
  3. sourcemap总结
  4. 在操作系统重启后恢复应用程序的工作状态
  5. Opencv与dlib联合进行人脸关键点检测与识别
  6. 在Controller中使用AOP
  7. 如何:将 TraceSource 和筛选器与跟踪侦听器一起使用(转载)
  8. 在GZIDG弄服务器的这一整夜,快乐
  9. 《Netkiller Spring Cloud 手札》Spring boot 2.0 mongoTemplate 操作范例
  10. BZOJ1857:[SCOI2010]传送带——题解