【问题标题】:Spring MVC / Security No-Static Role Based AuthenticationSpring MVC / Security 非静态基于角色的身份验证
【发布时间】:2014-08-31 12:17:21
【问题描述】:

我通过 no-xml 实现了基于 spring-mvc 的 java 应用程序。如何为每个控制器方法设置基于角色的身份验证?

我不想像下面的代码那样静态角色名称facultyMember

@PreAuthorize("hasRole('facultyMember')")
public Newsletter getFacultyNews() { }

【问题讨论】:

  • 那你怎么不授权呢?
  • 我想在运行时更改授权。例如:x人授权控制器方法,之后我将更改为不授权此方法。
  • 角色只不过是一种权限(尽管名称可能会产生误导)。角色基本上只不过是权限的集合。为什么要更改访问应用程序的一部分所需的权限?这应该是相当静态的。

标签: spring spring-mvc authentication spring-security spring-annotations


【解决方案1】:

虽然将访问服务的权限设为动态似乎很奇怪,但您可以尝试使用外部属性文件:

在您的应用程序上下文中:

<bean id="myProp" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="locations">
         <list>
              <value>file:///pathToExternalPropertyFile/myProp.properties</value>
           </list>
    </property>
</bean>

然后在你的控制器类中:

@Value("#{myProp['dynamicRole']}")
private String dynamicRole;

@PreAuthorize("hasRole('"+dynamicRole +"')")
public Newsletter getFacultyNews() { }

【讨论】:

  • 问题是当我们决定做出改变时——例如,也许应该允许助教阅读教师通讯——我们必须进入代码进行改变:@987654323 @ 它是由新版本引起的。我不想这样做。
  • 检查我编辑的可以由外部文件控制的答案
猜你喜欢
  • 2016-03-07
  • 2013-11-07
  • 2017-08-03
  • 2016-04-30
  • 2017-07-08
  • 2016-01-03
  • 2020-06-08
  • 2023-03-26
  • 2017-07-10
相关资源
最近更新 更多