如何向特定用户授权子系统?

时间:2013-02-03 14:58:08

标签: spring-security authorization

我正在使用SpringMVC,SpringSecurity,Spring,Mybatis作为我的Web应用程序。有很多并行子系统(比如说,不同的注册系统),我想要实现的是给每个管理员(有很多管理员在我的控制之下)授权给某些子系统。 例如,有管理员A,B,C,以及子系统X,Y,Z,我打算授权管理员A到子系统A,B,以授权管理员B到子系统C,就像这样。我怎么能使用spring security来实现这个效果,是否有关于这个问题的任何文章,或者我的谷歌一些术语。非常感谢!!

1 个答案:

答案 0 :(得分:1)

您可以为每个子系统设置不同的基本URL:

www.appdomain.com/subsitemA/page1.html
www.appdomain.com/subsitemA/page2.html
www.appdomain.com/subsitemB/*
www.appdomain.com/subsitemC/*
....
www.appdomain.com/subsitemX/*

然后使用 intercept-url 模式很容易保护它们:

<sec:http auto-config='true' use-expressions="true" >
    <!-- Specific patterns comes first -->
    <sec:intercept-url pattern="/subsitemA/**" access="hasRole('ROLE_ADM_A')" />
    <sec:intercept-url pattern="/subsitemB/**" access="hasRole('ROLE_ADM_A') and hasRole('ROLE_ADM_B')" />
    <sec:intercept-url pattern="/subsitemC/**" access="hasRole('ROLE_ADM_C') and hasRole('ROLE_ADM_D')" />
    ...
    <!-- General pattern comes last -->
    <sec:intercept-url pattern="/**" access="isFullyAuthenticated()" />
</sec:http>