如何从web套接字simpuser获取@authenticatedprincipal?

a64a0gku  于 2021-07-23  发布在  Java
关注(0)|答案(1)|浏览(328)

我正在尝试登录用户的详细信息谁是通过websocket连接在springboot2。为此,我目前正在使用simpuserregistry查找已连接Simpuser的列表。
从SpringBoot2.4开始,我注意到simpuser类有一个getprincipal()方法,它返回一个通用的principal对象。由于每个用户都应该通过springsecurity的机制登录,我以为我可以将其转换为springsecurity的userdetails来获得登录的用户,但我意识到事实并非如此。
有人知道我如何使用getprincipal或其他方法登录userdetails吗?

ovfsdjhp

ovfsdjhp1#

首先,让我们弄清楚 getPrincipal() 使用websocket,您必须通过 Interceptor (据我所知,springsecurity不会自动执行此操作)。
正确执行上述操作后,现在可以使用 getPrincipal () 方法。它将返回被验证主体的身份(可能是用户名、电子邮件等)
您可以使用如下代码:

@MessageMapping("/test")
public void doSomething(@Payload AppMessage appMessage, Principal principal) {
    String username = principal.getName();
    // find userDetail with username here
}

相关问题