J'ai fait quelques comparaisons entre Apache Shiro et de la Sécurité Printemps - je suis vraiment aimer le modèle de sécurité que Shiro utilise et croient que c'est beaucoup plus propre que le Printemps de Sécurité.
Cependant, un gros avantage serait d'être en mesure de référencer les paramètres de la méthode à partir de l'intérieur de la méthode la sécurité au niveau des annotations. Par exemple, je pourrais donc quelque chose comme:
@RequiresPermissions("account:send:*")
public void sendEmail( EmailAccount account, String to, String subject, String message) { ... }
Dans le cadre de cet exemple, cela signifie que l'utilisateur authentifié doit avoir l'autorisation d'envoyer des e-mails sur comptes de messagerie.
Cependant, ce n'est pas assez fine, que je veux niveau de l'instance autorisations! Dans ce contexte, nous supposons que les utilisateurs peuvent avoir des autorisations sur les instances de comptes e-mail. Donc, je voudrais écrire le code précédent quelque chose comme ceci:
@RequiresPermissions("account:send:${account.id}")
public void sendEmail( EmailAccount account, String to, String subject, String message) { ... }
De cette façon, l'autorisation de la chaîne est de référencement d'un paramètre passé à la méthode telle que la méthode peut être protégé contre une instance particulière de EmailAccount.
Je sais que je pourrais facilement le faire à partir de la plaine de code Java dans la méthode, mais il serait bon de réaliser la même chose en utilisant des annotations - je sais que le Printemps de Sécurité prend en charge de Printemps EL expressions dans ses annotations.
Est-ce certainement pas une caractéristique de Shiro et c'est ainsi que je dois écrire mes propres annotations?
Merci,
Andrew