2017-04-12 79 views
0

我下載了一個使用Apache Shiro作爲安全層的Spring MVC項目。在控制器,它使用@RequiresPermissions定義權限,例如:關於Apache Shiro在Spring MVC中的一些問題

@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. 什麼樣的權限是什麼?我檢查了基於doc的Shiro documents,三個部分應該是「domain:action:instance」,但在上面的代碼中,前兩個部分是路徑,最後一部分是動作。所以我只是困惑。
  2. 我不確定註釋@RequiresPermissions是用來定義權限。我試圖用它來定義一個新的權限,但失敗了。如果不是,如何定義新的權限?

回答

0

實際權限String是自由格式。 「domain:action:instance」就是一個例子。你可以使用類似users:write:1234或更通用的users:write。但沒有什麼能阻止你使用類似<domain>:<instance>:<action>的東西。使用相同的兩個示例,您將分別獲得users:1234:writeusers:*:write(分別)。

至於#2的境界(或RolePermissionResolver)是負責定義用戶和權限(或角色和權限)

+0

感謝答覆之間的映射。通過你的提示,我檢查了源代碼,並找到了底層的字符串比較。所以格式只是一個例子。 – popo