当前位置: 首页 > 面试题库 >

如何在Spring Security中使用自定义角色/权限?

申高峯
2023-03-14
问题内容

在将旧版应用程序迁移到Spring Security时,出现以下异常

org.springframework.beans.factory.BeanCreationException: Error creating bean with name '_filterChainProxy': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '_filterChainList': Cannot resolve reference to bean '_filterSecurityInterceptor' while setting bean property 'filters' with key [3]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '_filterSecurityInterceptor': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Unsupported configuration attributes: [superadmin]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)

在旧的应用程序中,角色有“超级管理员”,“编辑者”,“帮助台”等。但是在所有Spring Security示例中,我仅看到诸如“ ROLE _”(“
ROLE_ADMIN”等)的角色。当我将“ superadmin”重命名为“ ROLE_ADMIN”并且仅在配置中使用此角色时,一切正常。

不起作用:

 <http auto-config="true">                                      
    <intercept-url pattern="/restricted/**" access="superadmin"/>
    <form-login
        authentication-failure-url="/secure/loginAdmin.do?error=true"
        login-page="/secure/loginAdmin.do" />        
</http>

作品:

<http auto-config="true">                                      
    <intercept-url pattern="/restricted/**" access="ROLE_ADMIN"/>
    <form-login
        authentication-failure-url="/secure/loginAdmin.do?error=true"
        login-page="/secure/loginAdmin.do" />        
</http>

可以使用自定义角色名称吗?


问题答案:

您正在使用默认配置,该配置期望角色以"ROLE_"前缀开头。您将必须添加自定义安全配置并将其设置rolePrefix为“”;

http://forum.springsource.org/archive/index.php/t-53485.html



 类似资料:
  • 我有一些自定义角色,例如: 当使用'ROLE_USER'时,“spans”中的文本可以正常显示,但当使用其他角色时,文本无法显示。然后我在自定义角色中添加'ROLE_'前缀,它又变得正常了。 我尝试删除“ROLE\uu0”前缀约束,如下所示: 它也不起作用。知道如何删除强制的“ROLE\uuux”前缀吗?

  • 自定义角色:只有团队负责人、团队管理员和地图管理员三个角色可以创建自定义角色,可以自定义角色的名称和权限。 自定义角色分为: 自定义地图角色:对地图级别进行权限设置 自定义图层角色:对图层级别进行权限设置 自定义子图层角色:对子图层级别进行权限设置 自定义业务流角色:对业务流层级进行权限设置 1.创建自定义角色: 以地图角色创建为例,点击“创建新角色”,出现创建创建新角色的弹框。点击“地图角色”。

  • 我已经基于命名的路由为Laravel(4.2)创建了自定义角色管理器,例如: 基本上,任何注册为

  • 我正在使用IText7从html字符串生成pdf。现在,我需要对段落应用自定义颜色和自定义字体或字体系列。 如何使用Itext7实现这一点? 谢谢

  • 我有表: 用户、角色 数据透视表: 角色\u用户 模型: 用户、角色和权限。 现在我想实现的是,假设admin在控制面板中添加了新权限。那么,糟糕的是,作为一名开发人员,我必须站起来,打开代码,手动将这个新添加的权限放在一些路由的中间软件中。每次管理员授予新权限时,我都必须手动添加代码。 是否有任何方法可以动态执行所有这些操作,以便在管理员添加新权限后,我不会更改任何内容,也不会添加代码,并且新权

  • 我正在将Apache Shiro实现到我的web应用程序中,在启动时遇到了问题。 我想从postgreSQL数据库加载角色和权限,并检查用户是否具有角色/权限。 我的角色权利系统包括以下内容: 用户- 角色- 可以将角色分配给多个用户 用户角色分配始终与其他两个条件相关: 一个组织单位(在我的例子中称为OE) 一个学院 因此,用户“教员管理员”基本上可能有以下内容: 角色OE-管理员,拥有OE:3