J'ai plusieurs rôles utilisateur dans mon application Java.
Voici mon code: erreur: p> 2019-12-18t12: 00: 34.059 + 0000 objet sécurisé de débogage: filtreInvocation: URL: / tableau de bord; Attributs: HasanyRole ('Role_admin')
2019-12-18t12: 00: 34.059 + 0000 Débogu auparavant authentifié: org.springframework.security.authentication.seCasswordswordAuthenticantication.ArtOs@62Aad9E7: Principal: userDétails.customuserdétails@2228FF0D; Critiques: [protégé]; Authentifié: vrai; Détails: org.springframework.security.web.authentication.webauthenticationdétails@b364: RemotePaddress: 0: 0: 0: 0: 0: 0: 0: 1; SéanceID: null; Autorités accordées: Role_Data
2019-12-18t12: 00: 34.059 + 0000 Évébert de débogage: org.springframework.security.web.access.expression.webexpressionvoter@6925373, retourné: -1
2019-12-18T12: 00: 34.062 + 0000 L'accès à débogage est refusé (l'utilisateur n'est pas anonyme); Déléguer à l'accès à l'accèsdeniedHandler
org.springframework.security.access.accessdeniedException: l'accès est refusé p>
blockQuote> Désolé, je ne peux pas sembler obtenir l'exception montrant dans la balise "Code" ici: ( P> Le problème est maintenant lorsque je me connecte à l'administrateur tous les travaux 100%. Mais quand je me connecte avec l'utilisateur ou les données, alors je reçois une exception disant que j'ai essayé d'accéder à une page non autorisée. p> Alors, ce qui se passe est qu'il charge l'accès URL pour les données utilisateur, mais lorsque la dernière ligne est exécutée, modifie l'URL / tableau de bord pour avoir accès à l'administrateur. Mon rôle est toujours un rôle de données et n'a donc pas accès à l'URL / tableau de bord. p> Donc, il semble que la dernière ligne écrase les autres. Regarder L'URL privilège à nouveau, si je supprimais "/ Dashboard", je vais obtenir le même problème en ce qui concerne l'URL "/ Data". P> Y a-t-il une meilleure façon de faire cela ou peut-être un moyen Pour moi de résoudre ce problème? p> merci p> p>
3 Réponses :
L'ordre des antmatchers est important.
Les autres spécifiques devraient aller en premier. Le moins spécifique devrait être le dernier. P>
réorganiser les antmatchers comme suit: p> Je suppose que l'utilisateur est plus spécifique que les données. P > p>
True, parce que vous ne comprenez pas complètement les matchers. La commande est importante et la première à correspondre à des victoires. Donc, le / tableau de bord / ** code> correspond toujours à l'utilisateur, il ne tombera pas.
Autorisation étrange ... Vous devez changer la logique.
Dans votre config, est écrit: Publicresources Code> AutorisTall et Correspondant
userAccess code> a un rôle d'utilisateur et toutes les demandes authentifié et correspondeur
dataaccess code> a des données de rôle et toutes les demandes authentifiées et toutes les demandes authentifiées. ... (multiples définitions de AnyRequest) P>
Vous ne fournissez aucune réponse ou solution ici?
Et si vous ne répétez pas un point de terminaison pour le rôle
Il devrait y avoir un seul AnyRequest (). Authentifié () code> et il devrait être le dernier.