天道酬勤,学无止境

基于 XML 的 Spring Security 配置中的 use-expressions 属性等同于基于代码的配置(Equivalent of use-expressions attribute in XML based Spring Security configuration to code based configuration)

问题

如何在基于代码的配置中启用 Spring Security 配置的use-expressions选项? 需要此选项才能为 Thymeleaf 启用基于表达式的访问控制。

在 XML 配置中,它看起来像这样:

...
<http auto-config="true" use-expressions="true" >
   ...   
</http>
...
回答1

根据这篇博文,使用 Java 配置时, use-expressions设置为 true。

Comparison to XML Namespace
...
One difference is that Java Configuration uses authorizeUrls 
to specify use-expressions="true"

希望这可以帮助。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Spring Security____快速入门(登录,密码加密等功能)
    一、Spring Security介绍 Spring Security 的前身是 Acegi Security ,是 Spring 项目组中用来提供安全认证服务的框架。 (https://projects.spring.io/spring-security/) Spring Security 为基于J2EE企业应用软件提供了全面安全服务。特别 是使用领先的J2EE解决方案-Spring框架开发的企业软件项目。人们使用Spring Security有很多种原因,不过通常吸 引他们的是在J2EE Servlet规范或EJB规范中找不到典型企业应用场景的解决方案。 特别要指出的是他们不能再 WAR 或 EAR 级别进行移植。这样,如果你更换服务器环境,就要,在新的目标环境进行大量的工作,对你的应用 系统进行重新配 置安全。使用Spring Security 解决了这些问题,也为你提供很多有用的,完全可以指定的其他安 全特性。 安全包括两个主要操作。 ○ “认证”,是为用户建立一个他所声明的主体。主题一般式指用户,设备或可以在你系 统中执行动作的其他系 统。 ○ “授权”指的是一个用户能否在你的应用中执行某个操作,在到达授权判断之前,身份的主题已经由 身份验证 过程建立了。 这些概念是通用的,不是Spring Security特有的。在身份验证层面,Spring
  • SpringSecurity安全认证服务框架--登录验证及权限管理
    SpringSecurity安全认证服务框架 主要操作 “认证”,是为用户建立一个他所声明的主体。主题一般式指用户,设备或可以在你系 统中执行动作的其他系 统。–>检查登陆“授权”指的是一个用户能否在你的应用中执行某个操作,在到达授权判断之前,身份的主题已经由 身份验证 过程建立了。–>检查权限 使用步骤–快速入门 1.在项目的pom文件中导入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.Demo</groupId> <artifactId>SpringSecurity</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name
  • JavaWeb进阶修炼手册35---spring-security(一)概述及入门案例
    1. 今日内容 文章目录 1. 今日内容2. spring-security概述2. spring-security入门案例2.1 在pom.xml文件中导入依赖2.2 创建 spring-security.xml配置文件并配置2.3 在 web.xml文件中加载spring-security.xml文件2.4 检测spring-security是否配置成功 2. spring-security概述 1. 为什么学习spring-security? * spring-security框架是一套专门针对于权限处理的一套解决方案,比如登入操作,不同的用户有不同的权限。当然这个登入操作我们使用拦截器或 者过滤器也可以实现,并在这样更加的轻量级。但是,在实际的开发过程中,针对于权限的操作不止限于登入操作,还有一系列其他的操作,比 如记住密码,session管理等等。而这些,spring-security都已经帮我们生成了相应的工具,我们进行配置和调用就可以使用。 2. spring-security介绍 * Spring Security 为基于J2EE企业应用软件提供了全面安全服务。特别 是使用领先的J2EE解决方案-Spring框架开发的企业软件项目。人们使用 Spring Security有很多种原因,不过通常吸 引他们的是在J2EE
  • Spring Security入门(基于SpringSecurity xml配置文件)
    学习项目中用到了Spring Security进行权限管理,比较好用,使用到的方式是基于xml配置文件的,相比较java代码配置简洁很多,故作笔记整理共享 首先贴上全部spring security配置文件代码,还是一样,因为我这个是maven项目,所以需要提前在pom文件里写好依赖,以下pom文件内容仅供参考 <properties> <spring.version>5.0.2.RELEASE</spring.version> <spring.security.version>5.0.1.RELEASE</spring.security.version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency>
  • SpringSecurity
    SpringBoot下使用SpringSecurity (一)基本 1.SpringSecurityJWT学习博客 https://blog.csdn.net/larger5/article/details/81047869 https://blog.csdn.net/larger5/article/details/81063438 2.设置不需要登录就能访问接口 在SpringSecurityConfig里面配置 @Override public void configure(WebSecurity web) throws Exception { web.ignoring().antMatchers("/demo/noLogin");/设置不需要登录就能访问的url/ //web.ignoring().antMatchers("/info","/health","/hystrix.stream");//可以设置多个url } 3.在内存里面添加用户 /** 用户自定义安全认证 @param auth @throws Exception */ @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { /*在内存里面添加管理员用户 用户名是admin
  • Spring Security 基础篇(配置文件版学习)
    目录 第一章 Spring Security的概述1.1、框架概述1.2、常用术语1.3、常用单词1.4、环境准备 第二章 Spring Security的基本使用2.1、导入所需依赖2.2、创建配置文件2.3、配置过滤器链2.4、配置登录用户2.5、开放内嵌框架2.6、退出当前登录2.7、指定登录页面2.8、开放静态资源2.9、指定退出页面 第三章 Spring Security的高级使用3.1、深入跨站请求伪造3.1、CSRF的概念3.2、CSRF的原理3.3、CSRF的防御3.4、form表单如何添加token3.5、ajax请求如何添加token3.6、文件上传避免 CSRF 拦截3.7、如何关闭 CSRF 防御机制 3.2、完成网站自动登录3.3、保存凭据到数据库3.4、展示当前登录用户3.5、对接数据库中数据3.6、用户密码进行加密3.7、动态展示功能菜单3.7.1、页面菜单动态展示3.7.2、业务代码动态拦截 3.8、权限不足异常处理3.9、保证当前登录人数 配套资料,免费下载 链接:https://pan.baidu.com/s/1EINPwP4or0Nuj8BOEPsIyw 提取码:kbue 复制这段内容后打开百度网盘手机App,操作更方便哦 第一章 Spring Security的概述 1.1、框架概述 Spring Security 是 Spring
  • 具有多个登录页面的 Spring Security(Spring security with multiple login pages)
    问题 我正在使用 Spring security 使用用户名和密码保护登录到应用程序管理部分。 但是现在我的客户需要为应用程序客户端部分设置另一个登录屏幕,在那里他们将拥有自己的用户名/密码来登录到客户端部分。 到目前为止,我已经使用以下 spring-security.xml 设置成功实现了管理部分登录: <security:http auto-config="true" use-expressions="true"> <security:form-login login-page="/login" default-target-url="/admin/dashboard" always-use-default-target="true" authentication-failure-url="/login/admin?error_msg=wrong username or password" /> <security:intercept-url pattern="/admin/*" access="hasRole('ROLE_ADMIN')" /> <security:logout logout-success-url="/login"/> </security:http> <security:authentication-manager> <security
  • Spring Security权限控制框架
    Spring Security简介 Spring Security是 Spring提供的安全认证服务的框架。 使用Spring Security可以帮助我们来简化认证和授权的过程。官网:https://spring.io/projects/spring-security 对应的maven坐标: <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>5.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>5.0.5.RELEASE</version> </dependency> 常用的权限框架除了Spring Security,还有Apache的shiro框架。 Spring Security入门案例 工程搭建 创建maven工程,打包方式为war,为了方便起见我们可以让入门案例工程依赖health_interface,这样相关的依赖都继承过来了。 pom
  • 如何使用Spring Boot和Spring Security保护REST API?(How to secure REST API with Spring Boot and Spring Security?)
    问题 我知道保护REST API是一个被广泛评论的话题,但是我无法创建一个符合我的标准的小型原型(并且我需要确认这些标准是现实的)。 如何保护资源以及如何使用Spring安全性有很多选择,我需要弄清楚我的需求是否切合实际。 我的要求 基于令牌的身份验证器-用户将提供其凭据,并获得唯一且受时间限制的访问令牌。 我想在自己的实现中管理令牌的创建,检查有效性和到期时间。 某些REST资源将是公开的-完全不需要身份验证, 只有具有管理员权限的用户才能访问某些资源, 授权所有用户后,即可访问其他资源。 我不想使用基本身份验证 Java代码配置(非XML) 当前状态 我的REST API运作良好,但现在我需要保护它。 当我寻找解决方案时,我创建了一个javax.servlet.Filter过滤器: @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; String accessToken = request.getHeader(AUTHORIZATION_TOKEN)
  • Spring Security 的自定义访问规则(Custom Access Rules for Spring Security)
    问题 通常,您定义一些拦截 url 模式来配置对具有 spring 安全性的页面的访问 <http use-expressions="true"> <intercept-url pattern="/**/secure/**" access="hasRole('ROLE_SECURE_USER')" /> ... </http> 我们现在有一些带有事先未知的 url 的页面。 但是我们可以编写一段代码来决定某个特定的页面是否应该被保护,即我们可以提供一个服务,如果该页面必须被保护,则返回 true。 所以我们想做的是这样的: <http use-expressions="true"> <intercept decide="@service.mustProtect()" access="hasRole('ROLE_SECURE_USER')" /> ... </http> 如何使用 Spring 实现这一点? 我们是否必须编写自定义过滤器? 你将如何实现这样的过滤器? 回答1 实际上,通过在FilterSecurityInterceptor之前注入自定义过滤器来解决我们的问题非常容易。 然后,您可以在过滤器的doFilter方法中抛出AccessDeniedException以触​​发身份验证。 Spring安全配置: <http use-expressions="true">
  • Spring security 不支持的配置属性(Spring security unsupported configuration attributes)
    问题 我有以下片段 <http use-expressions="true" auto-config="false" entry-point-ref="loginUrlAuthenticationEntryPoint" access-decision-manager-ref="accessDecisionManager" disable-url-rewriting="false"> <!--<custom-filter position="CONCURRENT_SESSION_FILTER" ref="concurrencyFilter" /> --> <custom-filter position="FORM_LOGIN_FILTER" ref="usernamePasswordAuthenticationFilter" /> <custom-filter position="LOGOUT_FILTER" ref="tapLockFilter" /> <intercept-url pattern="/session/**" access="permitAll" /> <intercept-url pattern="/deviceregistration/**" access="permitAll" /> <intercept-url pattern="/session/lock"
  • Spring MVC,方法级安全(Spring MVC, Method level security)
    问题 我试图根据用户角色限制对我的控制器的访问。 现在我可以通过以下方式使用 security.xml 文件来做到这一点 <http use-expressions="true"> <intercept-url pattern="/**" access="hasRole([ROLE_ADMIN,ROLE_USER])" /> </http> 但我不想这样做。 而是我会写 <http use-expressions="true"> <intercept-url pattern="/**" access="isAuthenticated()"/> </http> 并在控制器中 @RequestMapping("/test") @PreAuthorize("hasRole('ROLE_USER')") public String test() { return "test"; } @RequestMapping("/testadmin") @PreAuthorize("hasRole('ROLE_ADMIN')") public String testAdminPage() { return "testadmin"; } 现在 ROLE_USER 可以同时访问 (ROLE_ADMIN & ROLE_USER) 标记的控制器。 这就是问题。 并且基于此testadmin.jsp只能由
  • 项目集·Java-Netty
    项目集·Java-Netty 一、Spring Security1、Spring Security1.1 Basic认证、表单认证1.2 授权1.3 常见Web攻击1.3.1 CSRF(Cross-Site Request Forgery,跨站请求伪造) 1.4 JWT+RSA·单点登录1.5 OAuth2·授权码模式 2、Spring Data JPA3、RABC(基于角色的权限管理) 二、Netty消息推送4、Netty4.1 设计模式4.1.1 模板模式4.1.2 策略模式4.1.3 状态模式4.1.4 代理模式 4.2 Netty 项目4.2.1 NIO(服务器设计史)4.2.1.1 Channel & Bytebuf4.2.1.2 Selector 4.2.2 Netty4.2.2.1 EventLoop(处理数据的工人)4.2.2.2 Channel(数据的通道)4.2.2.3 Future & Promise4.2.2.4 Handler & Pipeline(数据的处理工序)4.2.2.5 Bytebuf(流动的数据)4.2.2.6 自定义协议4.2.2.7 连接超时4.2.2.8 backlog 4.2.3 Netty·医院分诊排队叫号系统4.2.4 Netty·RPC 三、Dubbo·微服务网关5、Dubbo5.1 分库分表5.2 Hystrix原理5.3
  • 在 Spring Security 中处理自定义异常(Handle Custom Exceptions in Spring Security)
    问题 我们正在使用 spring MVC + spring security + hibernate 创建一个 RESTful API。 API 可以生成 JSON 和 HTML。 为 spring 安全做一个好的错误处理让我很头疼: 身份验证可以通过多种方式进行:BasicAuth、通过 POST 请求中的不同参数以及通过 Web 登录。 对于每种身份验证机制,spring security xml 配置的<http>命名空间元素中都声明了一个过滤器。 我们在自定义的HandlerExceptionResolver处理所有的 spring 异常。 这适用于我们控制器中抛出的所有异常,但我不知道如何处理自定义 spring 安全过滤器中抛出的自定义异常。 由于 spring 安全过滤器在调用我们的任何控制器之前出现,因此我们看不到我们在自定义 spring 安全过滤器中抛出的异常。 我在 stackoverflow 上发现了这个问题:在 Spring Security 中使用自定义异常。 但是我不明白他们在哪里处理在那里抛出的异常。 我们尝试了这种方法,但是我们的自定义HandlerExceptionResolver没有被调用。 相反,用户会看到一个由 tomcat 渲染的丑陋的堆栈跟踪。 我们为什么需要这个? 可以激活和停用用户。 如果它们被停用并尝试执行某些操作
  • 拦截网址格式/ **导致404错误(intercept-url pattern /** causing 404 error)
    问题 我在这里,google和springsource中搜索了此内容,但找不到适合我的解决方案。 我有下面的spring-security.xml,当我使用模式时 <intercept-url pattern="/**" access="hasRole('ROLE_USER')" /> 当我重定向到登录页面时,这给我一个404错误。 但这不会发生,如果我使用 <intercept-url pattern="/index*" access="hasRole('ROLE_USER')" /> 但这显然不能确保其余应用程序的安全。 我敢肯定,这是我所忽略的简单事物,但是我能找到的最接近的东西是这个堆栈溢出问题,我已经将其合并到下面的xml文件中,但是仍然存在相同的问题。 我已经尝试过在不use-expressions="true"进行尝试,并且尝试在周围切换intercept-url (我不是100%,但是我很确定/**模式应该是最后一个,因为我相信网址按声明的顺序进行匹配) 任何建议/帮助都很好 spring-security.xml <beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:beans="http://www.springframework.org/schema/beans"
  • SpringBoot简单使用笔记
    项目结构 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KefEFxpz-1617086101760)(./SpringBoot项目结构.bmp)] SpringBoot默认两种配置文件方式 .properties和 .yml,其中properties配置文件的优先级高于 .yml 入口类 需要放在包的最外层,以便能够扫描到所有子包中的类 @SpringBootApplication 是一个组合注解,包含 @EnableAutoConfiguration、@ComponentScan和@SpringBootConfiguration pom.xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RC1</version> <relativePath/> <!-- lookup parent from repository --> </parent> <!--用来提供相关的Maven默认依赖,使用后,常用的依赖包可以省去version标签--> <dependency> <groupId>org.springframework.boot</groupId>
  • 如何在Spring Security和LDAP中使用“记住我”身份验证?(How do I use “Remember Me” authentication with Spring Security and LDAP?)
    问题 我想通过LDAP身份验证使用Spring Security的“记住我”。 此处描述了LDAP身份验证配置,我做了一些微小的更改。 您能告诉我如何在该配置中添加“记住我”吗? 或者,也许可以给我一个示例,说明如何执行此操作。 谢谢你。 回答1 您实际上只需要为“记住我”属性提供一个数据源引用或一个令牌库引用以及一个用户服务引用。 我还看到了一些其他示例,这些示例在http元素中使用了基于投票者的access-decision-manager-ref,但是似乎使use-expressions =“ true”无效。 我对此不满意的唯一事情是必须两次指定ldap属性。 <beans:import resource="datasource-context.xml"/> <http use-expressions="true" > <intercept-url pattern="/auth/**" access="permitAll" /> <intercept-url pattern="/admin/**" access="hasRole('MY_ROLE_ADMIN')" /> <intercept-url pattern="/**" access="isAuthenticated()" /> <form-login /> <logout /> <remember-me key="
  • 如何通过XML配置仅针对特定的URL模式禁用Spring Security 4中的CSRF?(How to disable CSRF in Spring Security 4 only for specific URL pattern through XML configuration?)
    问题 如何通过XML配置仅针对特定的URL模式在Spring Security 4中禁用CSRF? Spring-security.xml <security:http auto-config="true" use-expressions="true" pattern="/ext/**"> <csrf disabled="true" /> </security:http> <security:http auto-config="true" use-expressions="true" authentication-manager-ref="authenticationManager"> <security:intercept-url pattern="/auth/**" access="hasAnyRole('ROLE_USER')" /> <security:form-login login-page="/login" authentication-success-handler-ref="loginSuccessHandler" authentication-failure-url="/login" login-processing-url="/j_spring_security_check" /> <security:logout invalidate-session=
  • 2021年Spring 面试题(二)面试题及答案解析,精选例题轻松搞定大厂面试官
    前言 最近针对互联网公司面试问到的知识点,总结出了Java程序员面试涉及到的绝大部分面试题及答案分享给大家,希望能帮助到你面试前的复习且找到一个好的工作,也节省你在网上搜索资料的时间来学习。 内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、SpringBoot、SpringCloud、RabbitMQ、Kafka、Linux等技术栈。 完整版Java面试题地址:JAVA后端面试题整合 1、什么是 spring? Spring 是个 java 企业级应用的开源开发框架。Spring 主要用来开发 Java 应用,但是有些扩展是针对构建 J2EE 平台的 web 应用。 Spring 框架目标是简化 Java企业级应用开发,并通过 POJO 为基础的编程模型促进良好的编程习惯。 2、使用 Spring 框架的好处是什么? 轻量:Spring 是轻量的,基本的版本大约 2MB。 控制反转:Spring 通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。 面向切面的编程(AOP):Spring 支持面向切面的编程,并且把应用业务逻辑和系统服务分开。容器:Spring 包含并管理应用中对象的生命周期和配置。 MVC 框架:Spring 的 WEB
  • SpringSecurity基础——快速入门
    一. 初始SpringSecurity 1. 简介 Spring Security是spring采用AOP思想,基于servlet过滤器实现的安全框架。它提供了完善的认证机制和方法级的授权功能。是一款非常优秀的权限管理框架。 2. 主要jar包 spring-security-core.jar: 核心包spring-security-web.jar: web工程必备,包含过滤器spring-security-config.jar: 用于解析xml配置文件spring-security-taglibs.jar: 动态标签库,jsp页面可用 3. 简单入门 3.1 导入maven依赖 <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-taglibs</artifactId> <version>5.1.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>5.1.5.RELEASE</version> <