lxm_yl
ascendlin
采纳率0%
2014-05-07 15:27 阅读 577
已采纳

springsecurity 权限命名ROLE_问题

今天弄了下springsecurity,版本是3.2的,设计了7表,也就是通常的用户、角色、权限、资源,和网上那一大堆配置差不多,唯独权限表我是用AUTH_来命名的,xxxSecurityMetadataSource如下:
[code="java"]
List authList = this.authoritiesMapper.findAll();
if (authList != null && !authList.isEmpty()) {
Map map = new HashMap();
for (Authorities auth : authList) {
ConfigAttribute configAttribute = new SecurityConfig(auth.getAuthority_code());//这里是AUTH_,不是ROLE_

[/code]
在userdetailService里面也是用的AUTH_ 将权限放到了userDetails里面。

现有如下权限与资源关系
user1--ROLE1---AUTH_1------------------>资源1
user1--ROLE1---AUTH_1------------------>资源2

user2--ROLE1---AUTH_2------------------>资源1
用user2去访问资源2居然会抛出 没有权限的AccessDeniedException。不是说权限都要用ROLE_开头么,这是怎么回事,
下面是我的spring_security.xml配置
[code="xml"]

    <access-denied-handler error-page="/403"/>


    <intercept-url pattern="/**" access="isAuthenticated()" />

    <form-login login-page="/login" default-target-url="/welcome"
        authentication-failure-url="/loginfailed" always-use-default-target="true"/>


    <session-management>
        <concurrency-control max-sessions="1" expired-url="/login"/>
    </session-management>   


    <logout logout-success-url="/logout" invalidate-session="true" logout-url="/j_spring_security_logout"/>


    <custom-filter ref="mySecurityFilter" before="FILTER_SECURITY_INTERCEPTOR"/>
</http>

[/code]

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    dohkoos dohkoos 2014-05-08 14:07

    [quote]现有如下权限与资源关系
    user1--ROLE1---AUTH_1------------------>资源1
    user1--ROLE1---AUTH_1------------------>资源2

    user2--ROLE1---AUTH_2------------------>资源1 [/quote]

    根据这个user2不只能访问资源1么!不抛出AccessDeniedException你还想咋地。

    点赞 评论 复制链接分享
  • Dead_Knight Dead_Knight 2014-05-09 08:52

    ROLE开头是用在简单的方式,如果你是自定义的,就没有这个限制了。也可以通过rolePrefix来配置是否启用前缀~

    点赞 评论 复制链接分享

相关推荐