当前位置: 首页 > 知识库问答 >
问题:

基于命名空间或URI的Spring Security性

澹台星光
2023-03-14

我需要基于URI的名称空间实现授权。例如,所有类型的用户都可以访问localhost:8080/common/*,而localhost:8080/admin/*只能访问admin用户。

我已经对登录内容使用了UsernamePasswordAuthenticationFilter,但我不知道如何检查每个请求的授权。

有谁能指导我如何使用spring security实现这种授权吗?

谢啦

共有1个答案

贡建修
2023-03-14

您可以使用

<intercept-url> element

intercept url元素可用于定义一个模式,该模式使用ant路径样式语法与传入请求的url相匹配。

例如使用SpEL的Spring 3.0:

<http auto-config="true" use-expressions="true">
    <intercept-url pattern="/common/*" access="permitAll" />
    <intercept-url pattern="/registered/*" access="hasAnyRole('ROLE_USER,ROLE_ADMIN')" />
    <intercept-url pattern="/admin/**" access="hasRole('ROLE_ADMIN')" />
</http>

如果您没有SpEL支持,请这样使用:

<http auto-config='true'>
    <intercept-url pattern="/common/*" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
    <intercept-url pattern="/registered/*" access="ROLE_USER,ROLE_ADMIN" />
    <intercept-url pattern="/admin/*" access="ROLE_ADMIN" />
</http>

文档

更新-如果您在JSP/JSP中进行转发,您需要在超文本传输协议元素上设置一次请求="false"。

另请参见:

  • Spring Security 3和JSF 2集成而无需重定向页面
 类似资料:
  • 以上描述的作为基于装饰器的活动处理函数的替代,属于命名空间的活动处理函数可以被创造成一个类的方法。Flask_socketio.Namespace提供了一个基于类的方法来创造命名空间。 from flask_socketio import Namespace, emit class MyCustomNamespace(Namespace): def on_conect(): pas

  • 问题内容: 我正在研究nodejs / socket.io的实时聊天,并且需要一些有关实施会议室的建议。 使用名称空间或使用房间功能来完全隔离颤抖的对方,哪个更好? 房间和名称空间之间真正的技术区别是什么? 资源使用方面有区别吗? 问题答案: 这是名称空间和房间 的共同点 (socket.io v0.9.8-请注意,v1.0涉及完整的重写,因此情况可能有所更改): 命名空间(io.of(’/ ns

  • 命名空间(namespace) 专为提供一种来保留一套独立名字与其他命名区分开来的方式。一个命名空间中声明的类的名字与在另一个命名空间中声明的相同的类名并不会发生冲突。 命名空间的定义 命名空间的定义以关键字 namespace 开始,其后跟命名空间的名称: namespace namespace_name { // 代码声明 } 调用的函数或变量的命名空间启用版本,在命名空间名称如下: n

  • 我的WSDL上有以下标签: 这些类型随后被鉴定为s0、s1。。。名称空间。 问题是名称空间endpoint(=)http://xxxxx/ws)是否需要是有效的url 如果endpoint不再存在-是否意味着我们需要再次为Web服务重新生成存根代理? 注意:Web服务本身的终结点与名称空间的终结点不同,并且仍然存在。

  • 我尝试创建另一个FilterChainProxy bean,在其链列表中包含上述两个过滤器,并将该bean作为自定义过滤器添加到之前的名称空间配置中,过滤器似乎可以工作,但我的JSF导航中断了,特别是在commandLink中(我认为使用此FilterChainProxy时AJAX调用失败) 有没有人可以就如何将这两个过滤器和可能的其他过滤器添加到Spring Security过滤器链提出任何想法

  • 为什么using指令在包含在匿名命名空间中时表现得好像出现在全局范围?