【问题标题】:Get all the spaces the current user has access to in XWiki获取当前用户在 XWiki 中可以访问的所有空间
【发布时间】:2016-03-13 13:29:27
【问题描述】:

如何获取java组件中当前用户可以访问的所有空间?

我有以下几点:

List<String> lstSpaces = new ArrayList<String>();
XWikiContext xcontext = this.xwikiContextProvider.get();
XWiki xwiki = xcontext.getWiki();
lstSpaces = xwiki.getSpaces(xcontext);

虽然这成功返回了所有空间,但它也返回了当前用户没有“查看”或其他访问权限的空间。此外,Java .getSpaces 似乎已被弃用,我似乎找不到为此的新方法。 http://maven.xwiki.org/site/docs/xwiki-javadoc-5.0.x/ 似乎已经过时,因为 xwiki.getSpaces() 在这个 javadoc 中仍然有效,别无选择。

【问题讨论】:

标签: java xwiki


【解决方案1】:

检查当前用户的权限

有一个 API 用于检查当前用户对给定页面的权限。没有检查完整空间的权限这样的事情(可以对各种解释开放,例如“用户可以访问至少一个页面”,或“用户在“权限”视图中有一个“确定”复选框为空间的根页")。

通常会检查该空间“主页”的访问权限(名称为 WebHome 的那个),因此指向该空间的链接不会导致该用户的“禁止”页面。

也没有查询过滤器之类的,而是必须单独检查每个页面。

访问检查在XWiki对象的checkAccess(String action, XWikiDocument doc, XWikiContext context)方法中;检查空间主页上的查看权限如下所示:

String spaceName = "...."
XWikiDocument spaceHomePage = xwiki.getDocument(spaceName +".WebHome", xcontext)
if (xwiki.checkAccess("view", spaceHomePage, xcontext) ) {
    // space home viewable
} else {
    // space home not viewable
}

“当前用户”存储在xcontext 对象中,无需在任何地方显式传递此用户对象。 (以防万一有人想知道。)

检查其他用户的权限

(这还没有被问到,但我刚刚查了一下......)

如果您想知道当前上下文中除用户之外的其他人的访问权限,则有 hasAccessLevel(String level, String user, String docname) 在 xwiki 对象的权限服务上,它希望完整引用 user 中的用户个人资料页面,因此代码通常如下所示:

XWikiUser user = xwiki.getUser(userLoginHere, xcontext).getUser();
if (xwiki.getRightService().hasAccessLevel("view", user.getUser(), spaceRef +".WebHome", xcontext) ) {
  // has view rights ...
}

或者,如果您自己在 java 组件中,您可以让组件管理器 @Injectorg.xwiki.security.authorization.AuthorizationManager 并在该类中使用 hasAccess 方法,该方法接受类型对象而不是纯字符串。 (它需要一个DocumentReference,而不是User 对象,所以给它一个user.getUserReference()。)

【讨论】:

  • 感谢优秀的遮阳篷。这澄清了一些事情!另外,我该如何执行以下操作:我有一个带有用户列表字段的类,如何从我的 java 组件中将用户添加到该字段?我已经访问了对象和字符串 username..
  • 我认为用户列表属性只是存储为用户文档引用的逗号分隔列表(即XWiki.+),因此您只需字符串连接即可将新用户添加到该字段.
猜你喜欢
  • 2018-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-17
  • 1970-01-01
  • 1970-01-01
  • 2015-08-20
  • 2017-02-23
相关资源
最近更新 更多