【问题标题】:spring security method security at run-time and dynamically运行时和动态的spring安全方法安全性
【发布时间】:2014-03-25 05:59:12
【问题描述】:

如果我有一个控制器方法

@RequestMapping (value = "/boards/{id}")
public String viewBoard(@PathVariable(value="id") String id){/*..*/}

我如何通过查询database 并获取该板 id 访问所需的值(对于已登录的用户)来动态地在 run-timepre authorize 用户那里。

我尝试使用 spring 安全角色研究 runtime dynamic spring 安全权限,但找不到有效的示例。


进一步阐述:

这意味着,每次用户想要访问该方法时,数据库都会检查用户是否拥有该方法的权限。

这不能在roles 中完成,因为可能有数百万个案例。 例如一位用户可能对板子 ID 3 具有查看权限,但对板子 ID 10003 没有查看权限


我得到了一些链接:

http://docs.spring.io/spring-security/site/docs/3.1.x/reference/ns-config.html#ns-method-security

http://docs.spring.io/spring-security/site/docs/3.0.x/reference/el-access.html

http://www.javabeat.net/separating-roles-and-permissions-in-spring-security/


更多信息:

我正在使用public class CustomUserDetailsService implements UserDetailsService{ 在登录时为用户提供角色。但那是另一回事。

【问题讨论】:

  • 您可以创建自定义过滤器来拦截所有请求以进行动态过滤
  • 看看这里。 stackoverflow.com/questions/17803406/…。如果您觉得这篇文章有用并且可能是您所需要的,我可以为您提供更多详细信息并详细解答。

标签: java spring spring-mvc spring-security


【解决方案1】:

你可以扩展spring security来提供你自己的表达式:在hasRole旁边

请参阅此问题以获取示例:How to create custom methods for use in spring security expression language annotations

查找示例时有一点很重要:注意示例是针对 METHOD-Resolver,而不是针对 WEB-Resolver!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-06
    • 2014-03-07
    • 2015-12-07
    • 2014-01-02
    • 2015-09-23
    • 2011-10-04
    • 2023-03-17
    • 1970-01-01
    相关资源
    最近更新 更多