【发布时间】:2018-01-23 06:51:07
【问题描述】:
有没有办法根据上述users role 对user 访问特定[URL] 进行编程限制。
例如,在shiro.ini 文件中,您可以定义:
[urls]
...
1. /app/**= user
可以在代码中定义filter chain,如下所示:
.....
UserFilter user = new UserFilter();//create user filter
user.setLoginUrl("login.xhtml");
FilterChainManager fcMan = new DefaultFilterChainManager();
fcMan.addFilter("user", user);//add filter to filter chain
fcMan.createChain("/app/**", "user");//define url path expression for filterName
.....
我的问题是如何使用roles 实现这一点,就像我在shiro.ini 文件中所做的那样:
[urls]
...
/api/admin/**= user, roles[admin]
...
例如:
RolesAuthorizationFilter adminRole = new RolesAuthorizationFilter();//eg create role filter
adminRole.setLoginUrl("login.xhtml");
UserFilter user = new UserFilter();//create user filter
user.setLoginUrl("login.xhtml");
FilterChainManager fcMan = new DefaultFilterChainManager();
fcMan.addFilter("user", user);
fcMan.addFilter("admin", adminRole);
fcMan.createChain("/api/admin/**", "admin");
【问题讨论】:
-
我不确定我是否完全遵循,您是否希望直接针对当前主题检查访问权限?即 subject.hasRole("ADMIN") shiro.apache.org/subject.html 或者您是否尝试以编程方式配置过滤器链,如果是,您使用的是哪个框架,可能已经有更简单的方法(Spring、Guice 等?)
-
我正在尝试以编程方式配置过滤器链,并且我正在使用 javaee7
-
@Brain 我接受了一个回答,在浏览了
filterChainManager#createChain的文档之后,我得到了它。感谢您有兴趣提供帮助。
标签: jakarta-ee shiro java-ee-7