当前位置: 首页 > news >正文

【第六篇】SpringSecurity的权限管理

一、权限管理的实现

服务端的各种资源要被SpringSecurity的权限管理控制可以通过注解和标签两种方式来处理。

image.png

放开了相关的注解后在Controller中就可以使用相关的注解来控制了

JSR250注解

/*** JSR250*/
@Controller
@RequestMapping("/user")
public class UserController {@RolesAllowed(value = {"ROLE_ADMIN"})@RequestMapping("/query")public String query(){System.out.println("用户查询....");return "/home.jsp";}@RolesAllowed(value = {"ROLE_USER"})@RequestMapping("/save")public String save(){System.out.println("用户添加....");return "/home.jsp";}@RequestMapping("/update")public String update(){System.out.println("用户更新....");return "/home.jsp";}
}

Spring表达式

/*** Spring表达式*/
@Controller
@RequestMapping("/order")
public class OrderController {@PreAuthorize(value = "hasAnyRole('ROLE_USER')")@RequestMapping("/query")public String query(){System.out.println("用户查询....");return "/home.jsp";}@PreAuthorize(value = "hasAnyRole('ROLE_ADMIN')")@RequestMapping("/save")public String save(){System.out.println("用户添加....");return "/home.jsp";}@RequestMapping("/update")public String update(){System.out.println("用户更新....");return "/home.jsp";}
}

SpringSecurity注解

@Controller
@RequestMapping("/role")
public class RoleController {@Secured(value = "ROLE_USER")@RequestMapping("/query")public String query(){System.out.println("用户查询....");return "/home.jsp";}@Secured("ROLE_ADMIN")@RequestMapping("/save")public String save(){System.out.println("用户添加....");return "/home.jsp";}@RequestMapping("/update")public String update(){System.out.println("用户更新....");return "/home.jsp";}
}

然后在页面模板文件中可以通过taglib来实现权限更细粒度的控制

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %>
<html>
<head><title>Title</title>
</head>
<body><h1>HOME页面</h1>
<security:authentication property="principal.username" />
<security:authorize access="hasAnyRole('ROLE_USER')" ><a href="#">用户查询</a><br>
</security:authorize><security:authorize access="hasAnyRole('RO

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Mac 下载并激活IDEA
  • 【深度学习】深入解码:提升NLP生成文本的策略与参数详解
  • 代码解读 | Hybrid Transformers for Music Source Separation[05]
  • 卡尔曼滤波的完整流程
  • 线程池介绍与应用
  • 【代码随想录】【算法训练营】【第30天 1】 [322]重新安排行程 [51]N皇后
  • easyexcel的简单使用(execl模板导出)
  • oracle块跟踪
  • OpenGL-ES 学习(6)---- Ubuntu OES 环境搭建
  • 探索AI视频生成技术的原理
  • Chromium源码阅读:Mojo实战:从浏览器JS API 到blink实现
  • vue中,设置全局的 input 为只读状态,并改变输入框背景色
  • AWS无服务器 应用程序开发—第四章 数据库(Amazon DynamoDB)
  • 关于下载 IDEA、WebStorm 的一些心得感想
  • 统信UOS屏蔽mysql显性的用户名称以及密码
  • [LeetCode] Wiggle Sort
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • Javascripit类型转换比较那点事儿,双等号(==)
  • NSTimer学习笔记
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • PAT A1120
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • React系列之 Redux 架构模式
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 高度不固定时垂直居中
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 前端面试之CSS3新特性
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 走向全栈之MongoDB的使用
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • mysql面试题分组并合并列
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • #### go map 底层结构 ####
  • #nginx配置案例
  • #php的pecl工具#
  • #每天一道面试题# 什么是MySQL的回表查询
  • #数学建模# 线性规划问题的Matlab求解
  • #在 README.md 中生成项目目录结构
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (1)Android开发优化---------UI优化
  • (1)Jupyter Notebook 下载及安装
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (待修改)PyG安装步骤
  • (第一天)包装对象、作用域、创建对象
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (六)Hibernate的二级缓存
  • (十六)串口UART
  • (算法)Travel Information Center
  • (五)IO流之ByteArrayInput/OutputStream
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)全文检索技术学习(三)——Lucene支持中文分词