Maison  >  Article  >  Est-il possible de récupérer des rôles depuis ServerWebExchange ?

Est-il possible de récupérer des rôles depuis ServerWebExchange ?

WBOY
WBOYavant
2024-02-11 13:24:08304parcourir

L'éditeur php Baicao répond à votre question : "Est-il possible de récupérer des rôles depuis ServerWebExchange ?" Dans Spring WebFlux, les informations sur le rôle actuellement demandées peuvent être obtenues via l'objet ServerWebExchange. ServerWebExchange est l'une des classes principales du framework Spring WebFlux, qui représente le contexte des requêtes et des réponses HTTP. Grâce à l'objet ServerWebExchange, vous pouvez accéder à des informations telles que le chemin de la demande, les en-têtes de la demande et les paramètres de la demande. Pour obtenir des informations sur le rôle, vous pouvez obtenir l'objet utilisateur actuellement demandé via la méthode getUser() de l'objet ServerWebExchange pour obtenir les informations sur le rôle de l'utilisateur. De cette manière, vous pouvez effectuer le contrôle des autorisations et le traitement métier correspondants en fonction du rôle de l'utilisateur.

Contenu de la question

Je peux récupérer le nom principal de l'instance org.springframework.web.server.serverwebexchange.

exchange.getprincipal().subscribe(principal -> /* do something with it */);

Puis-je également récupérer le rôle du directeur ? java.security.principal 类(与 userdetails 不同)仅提供名称字符串 (getname())

Cas d'utilisation : Disons que je souhaite écrire un gatewayfilter qui prend en compte le rôle de l'utilisateur actuel et modifie l'échange :

(exchange, chain) -> /* some filtering logic */

Solution de contournement

Je l'ai converti en authentication。就我而言,主体实际上是 usernamepasswordauthenticationtoken,即 authenticationsous-type

((Authentication) principal).getAuthorities()

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer