J'utilise Spring 3.0.3 avec Spring Security. Donc, j'ai des restrictions assez clémentes sur une application que je suis en train de faire. Je veux seulement m'assurer qu'une personne peut se connecter et être authentifiée afin de voir l'application. Je ne veux pas attribuer des rôles à tous les utilisateurs potentiels de cette application (cela pourrait être dans les dizaines de milliers).Sécurité de printemps: Autoriser les pages vues pour tous les utilisateurs entièrement authentifiés, sauf s'ils ont un rôle spécifique
Ainsi, il a été bien utiliser:
<security:intercept-url pattern="/**" access="isFullyAuthenticated()" requires-channel="https"/>
Mais maintenant, je veux être en mesure de limiter les gens d'utiliser l'application si je dois, je créé un rôle appelé ROLE_BANNED dans l'espoir que je pourrait simplement attribuer des rôles à ces personnes étant des problèmes.
Alors, maintenant, je suis en train ceci:
<security:intercept-url pattern="/**" access="isFullyAuthenticated() and not hasRole('ROLE_BANNED')" requires-channel="https"/>
Cela a semblé fonctionner au début, mais il ne peut pas charger ma page refusée. Je crois que cela restreint l'accès à la page refusée. Je ne peux pas charger la page refusée via le contrôleur ou en tant que jsp dans WEB-INF. Est-ce que quelqu'un peut me montrer comment autoriser les utilisateurs authentifiés à accéder à l'ensemble de mon application et envoyer des personnes avec un rôle spécifique (ROLE_BANNED) à la page refusée?
EDIT Voici ma sécurité entière: http configuration:
<security:http auto-config="true" access-denied-page="/denied" entry-point-ref="casAuthenticationEntryPoint" use-expressions="true">
<security:intercept-url pattern="/**" access="isFullyAuthenticated() and not hasRole('ROLE_BANNED')" requires-channel="https"/>
<security:intercept-url pattern="/denied" access="IS_AUTHENTICATED_FULLY" filters="none" />
<security:logout logout-url="/logout" logout-success-url="${cas.logoutUrl}" />
<security:session-management session-fixation-protection="none" />
<security:custom-filter after="CAS_FILTER" ref="casAuthenticationFilter"/>
<security:custom-filter before="CHANNEL_FILTER" ref="channelProcessingFilter" />
<security:port-mappings>
<security:port-mapping http="80" https="443" />
</security:port-mappings>
</security:http>
J'ai essayé d'utiliser un contrôleur cartographié la page refusée (/ refusée), une page jsp (de /denied.jsp) et même un page html simple (/denied.html), mais je reçois un 404 pour chacun. Je ne vois rien dans les fichiers journaux lorsque cela se produit.
Cela n'a pas fonctionné pour moi. J'ai mis à jour ma question avec plus de détails. –
Ah, maintenant que j'y pense, ce ne serait pas le cas. Votre utilisateur banni est toujours connecté (pas anonyme).Si vous supprimez tous vos éléments de sécurité, pouvez-vous toujours accéder/refusé via URL? –