SpringMVC中关于Apache Shiro的一些问题

Some questions about Apache Shiro in Spring MVC

我下载了一个 Spring MVC 项目,它使用 Apache Shiro 作为安全层。在控制器中,它使用@RequiresPermissions 来定义权限,例如:

@RequiresPermissions("sys:user:view")
@RequestMapping(value = {"index"})
public String index(User user, Model model) {
    return "modules/sys/userIndex";
}

@RequiresPermissions("sys:user:view")
@RequestMapping(value = {"list", ""})
public String list(User user, HttpServletRequest request, HttpServletResponse response, Model model) {
    return "modules/sys/userList";
}

我对此有几个问题:

  1. 这是什么权限?我检查了 Shiro documents,根据文档,三部分应该是 "domain:action:instance",但是在上面的代码中,前两部分是路径,最后一部分是动作。所以我很困惑。
  2. 我不确定注解@RequiresPermissions 是否用于定义权限。我尝试使用它来定义新权限,但失败了。如果不是,如何定义新的权限?

实际权限字符串是自由格式的。 "domain:action:instance" 就是一个例子。您可以使用 users:write:1234 或更通用的 users:write。但是没有什么能阻止你使用像 <domain>:<instance>:<action> 这样的东西。使用相同的两个示例,您将得到 users:1234:writeusers:*:write(分别)。

至于#2,你的领域(或RolePermissionResolver)负责定义用户和权限(或角色和权限)之间的映射