【第六篇】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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/706974.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于LangChain-Chatchat实现的RAG-本地知识库的问答应用[1]-最新版快速实践并部署(检索增强生成RAG大模型)

基于LangChain-Chatchat实现的RAG-本地知识库的问答应用[1]-最新版快速实践并部署(检索增强生成RAG大模型) 基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现,开源、可离线部署的检索增强生成(RAG)大模型知识库项目。 1.介绍 一种利用 langchain思想实现的基于本地知…

工厂环境中ESD防静电系统对静电灾害的预防与控制

静电在工厂环境中可能造成严重的危害&#xff0c;包括火灾、爆炸和设备损坏等。因此&#xff0c;对于工厂环境中的静电灾害&#xff0c;采取预防和控制措施是非常必要的。ESD防静电系统是一种用来预防和控制静电灾害的重要解决方案&#xff0c;它可以有效地降低静电危害发生的可…

Oracle 打开钱包 ORA-28368: cannot auto-create wallet

ORA-28368: cannot auto-create wallet 开启钱包抱错&#xff0c;看下钱包信息 SQL> select * from v$encryption_wallet;WRL_TYPE -------------------- WRL_PARAMETER -------------------------------------------------------------------------------- STATUS ------…

STL入门指南:从容器到算法的完美结合

目录 ​编辑 一、什么是STL 二、STL的版本 三、STL的六大组件 1. 容器&#xff08;Containers&#xff09;&#xff1a; 2. 算法&#xff08;Algorithms&#xff09;&#xff1a; 3. 迭代器&#xff08;Iterators&#xff09;&#xff1a; 4. 仿函数&#xff08;Functo…

Stable Diffusion: ControlNet Openpose

上一文已经介绍了ControlNet的安装&#xff0c;点击右边的三角箭头。 拖放原始姿态图片。 勾选“启用”&#xff0c;“完美像素模式”&#xff0c;“允许预览” 控制类型选择“OpenPose(姿态&#xff09;” 预处理器选“openpose_full”&#xff0c;会对原始姿态图片做整体分…

windows 环境下使用git命令导出差异化文件及目录

一、找出差异化的版本&#xff08;再此使用idea的show history&#xff09; 找到两个提交记录的id 分别为&#xff1a; 二、使用git bash执行命令&#xff08;主要使用 tar命令压缩文件&#xff09; 输出结果&#xff1a;

Zookeeper高频面试题整理(入门到精通)

文章目录 1、什么是Zookeeper&#xff1f;2、ZooKeeper的基本数据结构是什么&#xff1f;3、Zookeeper的节点类型有哪些&#xff1f;4、Zookeeper的特点5、ZooKeeper如何保证数据一致性&#xff1f;6、什么是ZAB协议&#xff1f;7、Zookeeper的ACL机制是什么&#xff1f;8、Zoo…

基于深度学习视觉算法的多模型文件融合检测系统设计与实现及优化(工人姿态检测+安全帽佩戴检测系统)

1&#xff0c;融合pose.pt(姿态检测)(安全帽佩戴检测)效果图 实时检测优化后FPS可达20 2,原理介绍 YOLOv5是目前应用广泛的目标检测算法之一&#xff0c;其主要结构分为两个部分&#xff1a;骨干网络和检测头。 输入&#xff08;Input&#xff09;: YOLOv5的输入是一张RGB图像…

UNIAPP-ADB无线调试

ADB下载 SDK 平台工具版本说明 | Android Studio | Android Developers (google.cn) 环境变量配置 ADB版本查看 adb version 手机使用数据线连接到电脑 手机需要授权adb调试(开发人员选项里面) CMD输入命令 adb tcpip 5555 到了这一步你手机已经启动了adb服务了&…

基于云效 AppStack,5 分钟搞定一个 AI 应用的开发和部署

实验介绍 区别于传统的流水线工具&#xff0c;本实验将带你体验云效应用交付平台 AppStack&#xff0c;从应用视角&#xff0c;完成一个 AI 聊天应用的高效交付。 你将体验到&#xff1a; 基于应用模板快速初始化应用&#xff0c;包含应用的代码库、部署编排架构、变量组、环…

MySQL之高级特性(三)

高级特性 分布式(XA)事务 存储引擎的事务特性能够保证在存储引擎级别实现ACID,而分布式事务则让存储引擎级别的ACID可以扩展到数据库层面&#xff0c;甚至可以扩展到多个数据库之间——这需要通过两阶段提交实现。MySQL5.0和更新版本的数据库已经开始支持XA事务了。XA事务中需…

3d交互式场景在线编辑平台的好处

在数字化教学的新时代&#xff0c;我们为您带来了革命性的产品——VR全景展示搭建编辑器。它将传统的教学方式升级为三维模式&#xff0c;让课程训练更加真实生动&#xff0c;为您带来前所未有的学习体验。 VR全景展示搭建编辑器不仅支持视频录播、PDF、图文等多种内容承载方式…

数据采集项目1-用户行为数据同步

环境准备 linux配置、克隆103和104、编写集群分发脚本、ssh无密码登录配置、jdk安装、数据模拟集群日志数据输出脚本、xcall脚本、安装hadoop、zk安装、kafka安装、flume安装、mysql安装、maxwell安装、datax安装、hive安装 用户行为数据同步-总的数据流程图 第一层flume 数据…

VS2022 使用C++访问 mariadb 数据库

首先,下载 MariaDB Connector/C++ 库 MariaDB Products & Tools Downloads | MariaDB 第二步,安装后 第三步,写代码 #include <iostream> #include <cstring> #include <memory> #include <windows.h>#include <mariadb/conncpp.hpp>…

C#——析构函数详情

析构函数 C# 中的析构函数&#xff08;也被称作“终结器”&#xff09;同样是类中的一个特殊成员函数&#xff0c;主要用于在垃圾回收器回收类实例时执行一些必要的清理操作。 析构函数: 当一个对象被释放的时候执行 C# 中的析构函数具有以下特点&#xff1a; * 析构函数只…

CID引流电商下的3C产品选品策略深度解析

​摘要&#xff1a;随着电商行业的迅猛发展和消费者需求的日益多样化&#xff0c;CID引流电商作为一种新兴的电商模式&#xff0c;逐渐受到了广泛关注。在这一模式下&#xff0c;3C产品作为高客单价、高技术含量的代表品类&#xff0c;其选品策略的制定显得尤为重要。本文将从多…

调用百度API实现图像多主体检测

目录 1. 作者介绍2&#xff0e;百度API介绍与获取2.1 API介绍2.2 注册账号并获取API Key 3&#xff0e;完整实验代码&#xff0c;测试结果3.1 调用API3.2框出主体部分&#xff0c;并标注标签和置信度3.3 测试结果 1. 作者介绍 邓富贵&#xff0c;男&#xff0c;西安工程大学电…

基于YOLO检测算法(单检测器网络+多视频输入)设计与实现

在单摄像头目标检测的基础上&#xff0c;实现单网络多线程的实时目标检测。 1&#xff0c;应用场景 在安防领域&#xff0c;YOLO的多摄像头实时目标检测应用具有以下特点和优势&#xff1a; 实时性能&#xff1a; YOLO算法以非常高的速度运行&#xff0c;能够实现实时目标检测…

threejs开发之 测量工具

基于threejs做三维开发已经有几年了&#xff0c;经常会遇到写一下通用的工具&#xff0c;比如测量工具。 测量工具很有意思&#xff0c;估计大家认为这个不是很容易写吗&#xff0c;就是几个事件&#xff0c;然后绘制点线面&#xff0c;然后用three计算长度&#xff0c;展示出来…

力扣752. 打开转盘锁

Problem: 752. 打开转盘锁 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.用一个集合 deads 存储所有的“死锁”状态&#xff0c;一个集合 visited 存储所有已经访问过的状态&#xff0c;以避免重复访问&#xff0c;一个队列 q 进行广度优先搜索&#xff08;BF…