在Apache Shiro中处理完全不同的用户组

时间:2014-05-21 07:01:00

标签: java spring apache shiro

我的系统有2个完全不同的用户组,客户和SysAds。它们位于不同的表结构中。

我试图了解如何设置Apache Shiro以分别正确地验证这些用户。

我在我的网络应用中使用Spring + Struts 2,并且我已经考虑过在我的web.xml中使用2个不同的主Shiro过滤器,如下所示:

<filter>
    <filter-name>authTravelAgentFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    <init-param>
        <param-name>targetFilterLifecycle</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter>
    <filter-name>authAdminFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    <init-param>
        <param-name>targetFilterLifecycle</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>authAdminFilter</filter-name>
    <url-pattern>/admin/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>authCustomerFilter</filter-name>
    <url-pattern>/main/*</url-pattern>
</filter-mapping>

这是设置Apache Shiro的有效方法,还是有更正确的方法?

1 个答案:

答案 0 :(得分:0)

通常,您可以为用户提供角色,并根据该角色提供特定访问权限。

例如,将以下内容放入您的ini文件中:

[roles]
main = *
admin = *

在这里,您只需定义两个没有特定权限的角色,但您可以使用它们限制某些网址模式的权限,因此只有具有正确角色的用户才能访问受限制的网址:

[urls]
...
/main/** = authc, roles[main]
/admin/** = authc, roles[admin]

如何将角色与用户结合,您可以在此处找到更多信息:https://shiro.apache.org/configuration.html#Configuration-INISections