私は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/static/current/apidocs/org/apache/shiro/authz/aop/package-summary.htmlのクラスで
新しい機能要求を作成しましたか? http://shiro.apache.org/issues.html –
複数の人がこれに対する新しい機能リクエストを追加しました。例を見てください:https://issues.apache.org/jira/browse/SHIRO-331 – user64141