gpt4 book ai didi

spring-mvc - 在 Websocket session Spring MVC 中访问 UserDetails 对象

转载 作者:行者123 更新时间:2023-12-01 06:28:03 26 4
gpt4 key购买 nike

在 Spring MVC 4 应用程序中通过 websocket 连接发送的调用中,我可以得到一个 java.security.Principal在方法中添加 this 作为参数时的对象。

但是,这基本上只有用户名,我需要(扩展)UserDetails登录时创建的对象。
SecurityContextHolder.getContext().getAuthentication()返回 null .据我了解,因为 spring 创建了一个特殊的 session 来处理 websocket 连接。

问题:有没有办法从 websocket session /线程内部访问安全上下文?

(能够访问 session bean 也足够了)。

最佳答案

@AuthenticationPrincipal专门用于 REST/MVC 方法。

但是,您可以通过添加类型 java.security.Principle 的参数来获得非常接近的结果。给您的 @MessageMapping注释方法然后取真实UserDetails对象如下:

FooUserDetails currentUser = (FooUserDetails) ((Authentication) user).getPrincipal();

这对我适用于 Spring Boot 1.5.4

关于spring-mvc - 在 Websocket session Spring MVC 中访问 UserDetails 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25889971/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com