【发布时间】:2015-10-15 20:38:14
【问题描述】:
我正在尝试在 websocket 的 open 方法中获取用户 ID,为此我使用的是 shiro,但我的 Subject 为 null,这是我的方法:
@OnOpen
public void open(final Session session, @PathParam("room") final String room) {
Subject currentUser = SecurityUtils.getSubject();
long id = currentUser.getPrincipals().oneByType(model.Users.class)
.getId();
log.info("session openend and bound to room: " + room);
session.getUserProperties().put("user", id);
}
有人知道我应该怎么做吗?
【问题讨论】:
-
我不熟悉 shiro,但我敢打赌
currentUser.getPrincipals...的东西预计这是一个普通的 http 请求,其中包含 cookie 等。您可能需要通过 websocket 连接传递一个标识符来识别您的用户。什么意思? -
谢谢,我认为你是对的,我得想点办法了
-
听起来不错。让我知道你发现了什么。希望我能提供更多帮助。