Spring Security 不会在拦截 URL 上重定向

2023-12-22

我的 spring-security.xml 有两个问题

  1. 当我在其中扮演多个角色时access="ROLE_ADMIN,ROLE_EMPLOYEE"
    我得到了例外:Caused by: java.lang.IllegalArgumentException: Failed to parse expression 'ROLE_ADMIN,ROLE_EMPLOYEE'
    但如果我有一个角色:access="ROLE_ADMIN"它会工作得很好

  2. 如果我直接降落在/Management/main/admin我不会被规则重定向:security:form-login login-page="/Management/auth/login/",这意味着我可以在没有管理员角色的情况下进入应用程序。

这是我的 spring-security.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:lang="http://www.springframework.org/schema/lang"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:sec="http://www.springframework.org/schema/security" 
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
        http://www.springframework.org/schema/security 
        http://www.springframework.org/schema/security/spring-security-3.0.xsd">

    <sec:global-method-security secured-annotations="enabled"  jsr250-annotations="enabled" />
    <sec:http auto-config="true" use-expressions="true"
        access-denied-page="/Management/auth/denied">

        <sec:intercept-url pattern="/Management/auth/login" filters="none" access="permitAll"/>
        <sec:intercept-url pattern="/Management/main/admin" filters="none" access="ROLE_ADMIN,ROLE_EMPLOYEE" />
        <sec:intercept-url pattern="/Management/api/affiliates/**" filters="none" access="ROLE_ADMIN,ROLE_EMPLOYEE" />

        <sec:form-login  login-page="/Management/auth/login/"
             authentication-success-handler-ref="loginAuthenticationSuccessHandler"
            authentication-failure-url="/Management/auth/login?error=true"
            login-processing-url="/Management/auth/j_spring_security_check"
            default-target-url="/Management/auth/login?error=false" />
        <sec:logout invalidate-session="true"
            logout-success-url="/Management/auth/login/" logout-url="/Management/auth/logout" />
    </sec:http>

    <sec:authentication-manager>
        <sec:authentication-provider
            user-service-ref="customUserDetailsService">
            <sec:password-encoder ref="passwordEncoder" />
        </sec:authentication-provider>
    </sec:authentication-manager>
    <bean id="loginAuthenticationSuccessHandler" class="com.affiliates.server.security.LoginAuthenticationSuccessHandler">
        <property name="defaultTargetUrl" value="/Management/auth/login?error=false"/>
    </bean>


    <bean
        class="org.springframework.security.authentication.encoding.Md5PasswordEncoder"
        id="passwordEncoder" />
    <bean id="customUserDetailsService" class="com.affiliates.service.CustomUserDetailsService" />
</beans>

这是我的 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
        /WEB-INF/spring-security.xml
        /WEB-INF/applicationContext.xml
        </param-value>
    </context-param>
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/classes/log4j-myapp.properties</param-value>
    </context-param>
    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/Management/*</url-pattern>
    </servlet-mapping>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
</web-app>

你正在使用使用表达式=true

您必须在拦截 URL 中使用 SpEL,如下所示:

 <security:http auto-config="true" use-expressions="true" access-denied-page="/krams/auth/denied" >

  <security:intercept-url pattern="/krams/auth/login" access="permitAll"/>
  <security:intercept-url pattern="/krams/main/admin" access="hasRole('ROLE_ADMIN')"/>
  <security:intercept-url pattern="/krams/main/common" access="hasRole('ROLE_USER')"/>

  ....
 </security:http>

要查看实际效果,请访问以下教程:http://krams915.blogspot.com/2010/12/spring-security-3-mvc-using-simple-user.html http://krams915.blogspot.com/2010/12/spring-security-3-mvc-using-simple-user.html

您可能还想查看一些有关本机表达式的信息:http://krams915.blogspot.com/2010/12/spring-security-3-mvc-using-native.html http://krams915.blogspot.com/2010/12/spring-security-3-mvc-using-native.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Security 不会在拦截 URL 上重定向 的相关文章

  • Spring安全+LocaleResolver

    我需要在身份验证成功后更改区域设置 区域设置解析器
  • 检查从 arrayadapter 获取的复选框

    我有标题清单 CheckBox 我想控制默认检查哪一个 所以我试图获得正确的视图并检查它 但由于某种原因它不起作用 知道为什么吗 form checkbox item xml
  • 如何在JavaFX中有效地滚动和缩放大图像?

    作为图像处理应用程序的一部分 我需要创建具有缩放 滚动和矢量叠加功能的简单查看器模块 图像相当大 40000x20000 这使得 ImageView 上的操作变慢 缓冲等 在 JavaFX 中处理巨大图像时 改善用户体验的最佳选项是什么 我
  • 如何将完整的日期格式拆分为日期和时间?

    我有很多格式为我的示例所示的字符串 我必须解析它们 我正在尝试确定今天是哪根弦 我的问题是 时间快到了 我只需要比较那个日期 接下来我想检查时间是否在 after 和 before 的两个时间戳 HH mm ss 之间 但存在问题 日期几乎
  • 查找所有数组的长度多维数组,Java

    我想使用多维数组来存储数据网格 但是 我还没有找到一种简单的方法来查找长度2nd数组的一部分 例如 boolean array new boolean 3 5 System out println array length 只会输出3 是否
  • Grails 项目 - Servlet 调用 - ClassNotFoundException:javax.servlet.AsyncContext

    我在用 IntelliJ IDEA 终极版 12 4 grails 2 2 0 BuildConfig groovy 文件中的 grails servlet version 2 5 并实现了简单的 servlet post 请求 使用 RE
  • AMQP Spring 集成错误处理

    我的集成流程如下所示 Bean public IntegrationFlow auditFlow Qualifier eventLoggingConnectionFactory ConnectionFactory connectionFac
  • 如何将日期字符串解析为Date? [复制]

    这个问题在这里已经有答案了 如何将下面的日期字符串解析为Date object String target Thu Sep 28 20 29 30 JST 2000 DateFormat df new SimpleDateFormat E
  • NIO 直接缓冲区何时以及如何被释放?

    我有一个 C 库 需要一个临时缓冲区作为暂存空间 我正在考虑将直接字节缓冲区的地址传递给它 在最终释放缓冲区之前 是否允许虚拟机重新定位缓冲区 JNI 框架消失后 本机库将保留该指针 我的理解是 JNI 本地对象引用无法缓存 因为 VM 可
  • 为什么不自动装箱泛型的 Java 基本类型?

    Java 不允许在通用数据结构中使用原始类型 例如 不允许使用 ArrayList 原因是 原始类型不能直接转换为Object 然而 Java 1 5 确实支持自动装箱 并且包装类在通用数据结构中工作 那么为什么编译器不能将其自动装箱到 A
  • 在 libgdx 中渲染 box2d

    我有一个使用 FitViewport 的大小为 800x480 的游戏世界 并且最初使用像素渲染 box2d 实体 固定装置 因此所有物理效果都显得浮动且缓慢 查看文档后 我意识到 box2d 使用度量单位 因此我将 box2d 位置和大小
  • 合并和颜色样式不适用于 Apache POI excel 2003 格式

    在 Apache POI 中 我为某些单元格应用了一些样式并合并了这些单元格 当我在 2010 年或 2007 年打开时 它工作正常 但在 2003 年 格式样式消失了 每次保存 2003 Excel 文件之前都会弹出兼容性检查对话框 请参
  • 用于 Eclipse 的 Resharper [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将 Maven 控制台与 m2eclipse 一起使用

    Maven 新手在这里 有没有办法在 Eclipse 中打开控制台并在 M2Eclipse 插件上执行 Maven 命令 这是一个非常好的插件 但我环顾四周 没有找到我想要的一些功能 谢谢 如果你想运行特定的maven插件 你可以这样做 g
  • Log4j 2.0 中发现 ClassNotFoundException

    我已经设置了 log4j12 api beta2 jar 的构建路径 但它给出了 以下错误请帮我解决这个问题我的代码如下 java 文件 package com sst log4j class Product private int pro
  • JavaFX Integer Spinner (IntegerSpinnerValueFactory) 不会将值回绕到最小值

    我创建了一个带有值的整数微调器 min 5 max 15 and initialValue 12 and wrapAround true 一旦旋转器到达max 15 增量期间的值 而不是将值重置为min 5 正如它所说文档 https op
  • 如何从 Sublime Text 编辑器调试 Java 应用程序

    有时我正在对相当大的 Java 应用程序进行简单的修复 但我不想打开 Eclipse 来执行此任务 Eclipse 启动时间很长 并且由于该项目是由大量子项目构建的 而这些子项目无论如何都是由 Maven 构建的 因此需要很长时间才能使用
  • Eclipse 如何创建一个未解决编译问题的类?

    当我尝试使用 javac 编译此类时 出现编译错误并且未创建 Test class public class Test public static void main String args int x 1L lt this cannot
  • Android - 从渲染线程内结束活动

    下午好 我不熟悉 android 中的活动生命周期 并且一直在尽可能地阅读 但我不知道如何以良好的方式解决以下问题 我有一个使用 GLSurfaceView 的活动来在屏幕上绘制各种内容 在这个 GLSurfaceView 的渲染线程中 我
  • 将其元素添加到另一个列表后清除列表

    我正在做一个程序 它获取更多句子作为参数 我制作了 2 个列表 一个称为 propozitie 其中包含每个句子 另一个称为 propozitii 其中包含所有句子 问题是 当我在遇到 后清除 propozitie 列表时 它也会清除 pr

随机推荐

  • 数据库设计中的多对多关系

    我目前有一个数据库 其中有两个表 分别称为 Articles 和 Tags 为了允许文章属于多个类别 我有多对多的关系 这样的设计从性能上来说是不是一个错误呢 或者我应该删除这两个表之间的关系并添加第三个表作为桥梁 articlesTags
  • 如何在单击按钮时通过动画显示视图?

    我是编码新手 我正在制作一个应用程序 我需要在单击按钮时显示一个视图 并且该视图应该看起来像是来自按钮本身 再次单击该按钮时 视图应返回到按钮 动画 我有翻转 卷曲等动画 但我不知道该怎么做 这是一个简单的例子 放showView 作为按钮
  • 如何访问django项目之外的目录文件?

    我的 Django 项目在 RHEL 7 操作系统上运行 项目在路径中 root project 项目托管在 httpd 服务器上 现在我正在尝试访问目录之外的文件 例如 root data info test txt 我应该如何访问vie
  • 如何在 JSF 2 中创建自定义转换器?

    我有一个名为 操作 的实体 Entity Table name operation public class Operation implements Serializable private static final long seria
  • 如何获得值的二进制表示形式[重复]

    这个问题在这里已经有答案了 可能的重复 C 中十进制到二进制的转换 https stackoverflow com questions 2954962 decimal to binary conversion in c 我有 3 432 1
  • site.css 不适用于我的示例网站

    这里是新手 我在 VS2010 中创建了一个空的 MVC 项目 并且正在尝试格式化我的视图以进行身份 验证 所以 我将其添加到 site css 中 rez color Olive 我的看法是 using Html BeginForm di
  • Django 静态文件(css)不起作用

    由于某种原因 我似乎无法包含我的引导 css 文件 我对 Python 和 Django 特别陌生 所以我肯定做错了什么 姜戈 1 9 2 读完后Django 官方解释 https docs djangoproject com en 1 9
  • Bootstrap:如何将按钮放置在输入组旁边

    我无法弄清楚 符合 正确的引导 如何让按钮位于 div 内的输入组旁边 它们需要居中对齐 这就是我想要的样子 这就是正在发生的事情 这是我当前的代码 div div div div
  • Boost变体apply_visitor编译错误

    这个简单的 boost variant 和 boost apply visitor 示例代码 include
  • 为什么通过实例调用静态方法不会给 Java 编译器带来错误?

    我相信你们都知道我的意思 代码例如 Thread thread new Thread int activeCount thread activeCount 引发编译器警告 为什么不是错误呢 EDIT 需要明确的是 问题与线程无关 我意识到在
  • 在 PHP 中实例化类的正确方法

    我正在尝试在类内创建一个方法 它将实例化当前所在的类 但我还需要此方法才能在所有扩展类中正常工作 据我所知这个线程 https stackoverflow com questions 5197300 new self vs new stat
  • Elasticsearch:可以进行批量搜索吗?

    我知道支持批量索引操作 但是否可以对搜索查询执行相同的操作 我想发送许多不同的不相关的查询 进行精度 召回测试 使用批量查询可能会更快 是的 您可以使用多搜索API https www elastic co guide en elastic
  • javascript:使用一个回调执行一堆异步方法

    我需要执行一堆异步方法 客户端 SQLite 数据库 并且仅调用一个最终回调 当然 最丑陋的方式是 execAll function callBack asynch1 function asynch2 function asynchN fu
  • Winforms DataGridView 数据绑定到复杂类型/嵌套属性

    我正在尝试数据绑定DataGridView包含具有以下结构的类的列表 MyClass SubClass Property 当我单步执行代码时 SubClass从未被要求 我没有收到任何错误 只是没有看到任何数据 请注意 我可以在具有相同层次
  • 用数字编织奇怪的失控行为

    我对数字有奇怪的行为 在某些块中 knitr 从单个绘图函数生成两个图形 并且从 chunkname 生成的图形被命名为 chunkname1 pdf 和 chunkname2 pdf 有时 第一个只是与第二个大小相同的空白图形 有时它是一
  • 正则表达式获取特定匹配单词后的单词

    我正在尝试从一些发票中提取美元金额 我需要准确无误地匹配紧接着 总计 这个词 此外 总计 一词有时可能会在其后出现一个冒号 即Total 示例文本示例如下所示 4 发现信用购买 c REF 02353R 总计 40 00AID 1523Q1
  • 如何在 Visual Studio 2015 中使用 MSBuild 在构建上部署 ASP.NET MVC 应用程序?

    我希望在构建项目时将应用程序部署到本地文件夹 这应该会生成一个 zip 文件 我可以用它导入到 IIS 中 我怎样才能实现这个目标 命令行 msbuild yoursolutionfile sln p DeployOnBuild true
  • 如何删除标准 iframe Facebook Like 按钮的“成为第一个喜欢这个的朋友”部分?

    我正在使用标准的 Facebook Like 按钮 iframe 而不是 fbml 有没有办法只显示 喜欢 按钮 而不显示 成为第一个喜欢这个的朋友 部分 目前这是不可配置的 如果您使用button count布局 那么您将看不到该文本
  • 如何在多个列表中找到共同元素?

    我有一个列表列表 嵌套列表 我需要找到它们之间的共同点 Example would be 1 3 5 1 6 7 9 3 1 3 10 11 应该导致 1 3 如果不使用HashSet的retainAll方法 如何迭代所有元素来查找 Tha
  • Spring Security 不会在拦截 URL 上重定向

    我的 spring security xml 有两个问题 当我在其中扮演多个角色时access ROLE ADMIN ROLE EMPLOYEE 我得到了例外 Caused by java lang IllegalArgumentExcep