1
這是什麼意思?hasPermission spring安全
@PreAuthorize("hasPermission('DEVICE', {'DELETE','CREATE'})")
是否檢查Device對象是否具有DELETE和CREATE兩者的權限或其中的任何一個?
這是什麼意思?hasPermission spring安全
@PreAuthorize("hasPermission('DEVICE', {'DELETE','CREATE'})")
是否檢查Device對象是否具有DELETE和CREATE兩者的權限或其中的任何一個?
正如評論中所說,這取決於你擁有哪個PermissionEvaluator。如果您使用內置的ACL系統,則將授予DefaultPermissionGrantingStrategy。 javadoc說:
該方法將按指定的順序遍歷每個
permission
s。對於每次迭代,將會考慮所有sid
,再次按照它們的呈現順序。然後搜索將直接匹配permission:sid
組合的第一個AccessControlEntry
對象。當找到第一個完整匹配時,該ACE的授予或拒絕標誌將佔上風。如果ACE指定授予訪問權限,該方法將返回true
。如果ACE指定拒絕訪問,則循環將停止並且將執行下一個迭代。
(SIDS =安全標識,用戶的校長和主管部門)
在實踐中,這意味着只有一個權限的需要方法返回true。
這取決於您的PermissionEvaluator – Vitolds