我一直在做一些Apache Shiro和Spring Security之間的比較 - 我真的很喜歡Shiro使用的安全模型,並且相信它比Spring Security更乾淨。我可以在Apache Shiro安全註釋中使用表達式嗎?
但是,一個好的方法是能夠從方法級別的安全註釋中引用方法參數。例如,現在我可以這樣類似:
@RequiresPermissions("account:send:*")
public void sendEmail(EmailAccount account, String to, String subject, String message) { ... }
在這個例子的情況下,這意味着身份驗證的用戶必須能夠對發送的電子郵件帳戶的電子郵件的權限。
但是,這不夠細粒度,因爲我想要實例級權限!在這種情況下,假設用戶可以擁有電子郵件帳戶實例的權限。所以,我想編寫前面的代碼是這樣的:
@RequiresPermissions("account:send:${account.id}")
public void sendEmail(EmailAccount account, String to, String subject, String message) { ... }
通過這種方式,允許字符串是引用傳遞到方法,使得該方法可以被固定以防止EmailAccount的特定實例的參數。
我知道我可以很容易地從該方法中的普通Java代碼做到這一點,但使用註釋實現同樣的事情會很好 - 我知道Spring Security在其註釋中支持Spring EL表達式。
這是絕對不是四郎的功能,因此我將不得不寫我自己的自定義註釋?
感謝,
安德魯
沒有創造新的功能要求? http://shiro.apache.org/issues.html –
多人爲此添加了新的功能請求。例如見:https://issues.apache.org/jira/browse/SHIRO-331 – user64141