带你详细了解Spring Security的注解方式开发

目录
  • 默认情况下,不会开启注解,如果想用注解,需要开启注解支持。
  • 总结

默认情况下,不会开启注解,如果想用注解,需要开启注解支持。

在启动类上开启:

@EnableGlobalMethodSecurity(securedEnabled = true)

@SpringBootApplication
@ComponentScan(basePackages = {"com.example"})
// 开启springSecurity注解支持
@EnableGlobalMethodSecurity(securedEnabled = true)
public class SeqeurityTestApplication {
    public static void main(String[] args) {
        SpringApplication.run(SeqeurityTestApplication.class, args);
    }
}

以下的注解可以放在Service接口或方法上,也可以写到Controller 的方法上。但通常写在控制器方法上。

常用的注解

(1)@Secured

相当于配置类中的hasRole()方法。

@Secured 是专门用于判断是否具有某个角色。能写在方法上或类上。参数要以 ROLE_开头。

使用:

// 只有 有角色abc的登录者才能访问这个接口
@Secured(value="ROLE_abc")
@RequestMapping (value = "/login1")
public String login() {
    return "login11";
}

上边的角色对应的是:

(2)@PreAuthorize / @PostAuthorize

@PreAuthorize / @PostAuthorize 都是方法级别的注解。

@PreAuthorize 表示访问方法或类在执行之前先判断权限,大多数情况下使用这个注解,注解的参数和access() 方法参数取值相同,都是权限表达式。

@PostAuthorize 表示方法或类执行结束后判断权限,此注解很少使用。

使用上边两个注解,必须要开启注解支持:

// 开启springSecurity注解支持
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)

测试

// 只有 有角色abc的登录者才能访问这个接口,参数是access表达式
@PreAuthorize("hasRole('abc')") // 可以写成 @PreAuthorize("hasRole('ROLE_abc')")
@RequestMapping (value = "/login1")
public String login() {
    return "login11";
}

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • SpringSecurity怎样使用注解控制权限

    一般的系统在权限设计上,都会分为角色.权限(RDBC),复杂一点的可能会有用户组.组织之类的概念. 用户的权限是写死的,对应于后台的接口或者资源,是没办法改变的,一般不对用户开放修改权限. 管理员用户可以通过给角色分配权限的方式,来实现访问控制. 所以当我们写过滤器,或者用一些安全框架时(比如Shiro,Spring Security),也需要将可变的"角色",转化为不可变的"权限",注入到框架中. 具体的可以看我之前写的一篇(Spring Security整合jw

  • Spring Security实现微信公众号网页授权功能

    微信公众号提供了微信支付.微信优惠券.微信H5红包.微信红包封面等等促销工具来帮助我们的应用拉新保活.但是这些福利要想正确地发放到用户的手里就必须拿到用户特定的(微信应用)微信标识openid甚至是用户的微信用户信息.如果用户在微信客户端中访问我们第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑.今天就结合Spring Security来实现一下微信公众号网页授权. 环境准备 在开始之前我们需要准备好微信网页开发的环境. 微信公众号服务号 请注意,一定是微信公众号

  • SpringSecurity实现动态url拦截(基于rbac模型)

    目录 1.了解主要的过滤器 1.SecurityMetadataSource 2.UserDetailsService 3.AccessDecisionManager 2.正式实战了 1 使用idea的Srping Initializr 创建一个项目 我的版本如下Pom.xml 2,创建一个springSecurity配置类,你也可以使用配置文件的方法.我这里使用了boot的配置类 3.自定义SecurityMetadataSource拦截器 后续会讲解如何实现方法拦截.其实与url拦截大同小异

  • Spring Security入门demo案例

    目录 一.简介 二.入门案例 三.自定义认证逻辑 四.自定义授权逻辑 五.注销登录 六.记住我功能 七.会话管理 一.简介 Spring Security是一个高度自定义的安全框架.利用Spring IoC/DI和AOP功能,为系统提供了声明式安全访问控制功能,减少了为系统安全而编写大量重复代码的工作.主要包含如下几个重要的内容: 认证(Authentication),系统认为用户是否能登录. 授权(Authorization),系统判断用户是否有权限去做某些事情. 二.入门案例 首先引入必要的

  • SpringSecurity数据库进行认证和授权的使用

    目录 一.准备工作 1.1 导入相关依赖 1.2 配置信息 1.3 数据库准备 1.4 实体类的创建 1.5 Dao层的创建 1.6 Service层的编写 1.7 Security配置 1.8 密码加密 1.9 测试结果 在前面的文章中,我们介绍了Spring Security基于内存的一些基本使用方法,但在真实的业务场景中,用户的账号.密码以及角色信息肯定都是存放在数据库中的,所以我们需要从数据库中来加载认证和授权的数据. 一.准备工作 如下案例是基于上一篇中的案例改造而来,所以建议先阅读前

  • 带你详细了解Spring Security的注解方式开发

    目录 默认情况下,不会开启注解,如果想用注解,需要开启注解支持. 总结 默认情况下,不会开启注解,如果想用注解,需要开启注解支持. 在启动类上开启: @EnableGlobalMethodSecurity(securedEnabled = true) @SpringBootApplication @ComponentScan(basePackages = {"com.example"}) // 开启springSecurity注解支持 @EnableGlobalMethodSecuri

  • spring AOP自定义注解方式实现日志管理的实例讲解

    今天继续实现AOP,到这里我个人认为是最灵活,可扩展的方式了,就拿日志管理来说,用Spring AOP 自定义注解形式实现日志管理.废话不多说,直接开始!!! 关于配置我还是的再说一遍. 在applicationContext-mvc.xml中要添加的 <mvc:annotation-driven /> <!-- 激活组件扫描功能,在包com.gcx及其子包下面自动扫描通过注解配置的组件 --> <context:component-scan base-package=&qu

  • Java Spring框架的注解式开发你了解吗

    目录 1.Spring框架的注解式开发 1.1开启注解扫描配置 1.2实例化相关注解 1.3控制对象的创建次数的注解 1.4注入相关的注解 1.5控制事务的相关注解 总结 1. Spring框架的注解式开发 # Spring框架的注解式(Annotation)开发 1. 注解式开发 定义:通过Spring框架提供的一系列注解来完成项目中快速开发 注解:Annotation是java中一种特殊的类 类似于interface 使用时:@注解类名(属性=参数) @Param(Mybatis中做参数绑定

  • Spring Boot 利用注解方式整合 MyBatis

    目录 前言 整合过程 新建 Spring Boot 项目 添加 pom 依赖 准备数据库 pojo 层 dao 层 service 层 controller 层 入口程序配置 网页测试 总结 前言 目前而言,国内大家使用最多的持久层框架可能还是 MyBatis 吧,那既然如此,更强大的 Spring Boot 遇上炽手可热的 MyBatis,又会擦出什么样的火花呢? 那本文就来看看,如何利用 SpringBoot 来整合 Mybatis. 如下图是总结的整合过程的大概流程,那接下来我们就来开始具

  • Spring Bean管理注解方式代码实例

    1.使用注解的方式需要配置applicationContext.xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context=&qu

  • Spring MVC完全注解方式配置web项目

    在servlet 3.0 开始web项目可以完全不需要web.xml配置文件了,所以本文的配置只在支持servlet 3.0及以上的web容器中有效 使用的是spring mvc (4.3.2.RELEASE) + thymeleaf(3.0.2.RELEASE), 持久层使用的 spring的 JdbcTemplate, PS:推荐一个很好用的对JdbcTemplate封装的框架:https://github.com/selfly/dexcoder-assistant  . 下面开始具体的配置

  • 详解Spring Security中权限注解的使用

    目录 1. 具体用法 2. SpEL 3. @PreAuthorize 最近有个小伙伴在微信群里问 Spring Security 权限注解的问题: 很多时候事情就是这么巧,松哥最近在做的 tienchin 也是基于注解来处理权限问题的,所以既然大家有这个问题,咱们就一块来聊聊这个话题. 当然一些基础的知识我就不讲了,对于 Spring Security 基本用法尚不熟悉的小伙伴,可在公众号后台回复 ss,有原创的系列教程. 1. 具体用法 先来看看 Spring Security 权限注解的具

  • 详解Spring Security 中的四种权限控制方式

    Spring Security 中对于权限控制默认已经提供了很多了,但是,一个优秀的框架必须具备良好的扩展性,恰好,Spring Security 的扩展性就非常棒,我们既可以使用 Spring Security 提供的方式做授权,也可以自定义授权逻辑.一句话,你想怎么玩都可以! 今天松哥来和大家介绍一下 Spring Security 中四种常见的权限控制方式. 表达式控制 URL 路径权限 表达式控制方法权限 使用过滤注解 动态权限 四种方式,我们分别来看.  1.表达式控制 URL 路径权

  • Spring Security基于过滤器实现图形验证码功能

    目录 前言 一. 验证码简介 二. 基于过滤器实现图形验证码 1. 实现概述 2. 创建新模块 3. 添加依赖包 4. 创建Producer对象 5. 创建生成验证码的接口 6. 自定义异常 7. 创建拦截验证码的过滤器 8. 编写SecurityConfig 9. 编写测试页面 10. 代码结构 11. 启动项目测试 前言 在前两个章节中,一一哥 带大家学习了Spring Security内部关于认证授权的核心API,以及认证授权的执行流程和底层原理.掌握了这些之后,对于Spring Secu

  • Spring Security全新版本使用方式

    目录 基本使用 升级版本 旧用法 新用法 高级使用 基于方法的动态权限 基于路径的动态权限 效果测试 总结 参考资料 项目源码地址 前不久Spring Boot 2.7.0 刚刚发布,Spring Security 也升级到了5.7.1 .升级后发现,原来一直在用的Spring Security配置方法,居然已经被弃用了.不禁感慨技术更新真快,用着用着就被弃用了!今天带大家体验下Spring Security的最新用法,看看是不是够优雅! SpringBoot实战电商项目mall(50k+sta

随机推荐