在我的情况(tomcat)中,我使用 tomcat-users.xml 来管理用户和角色之间的链接
<tomcat-users>
<role rolename="role1"/>
<role rolename="role2"/>
<user password="tomcat" roles="tomcat" username="tomcat"/>
<user password="123456" roles="role1,role2" username="user1"/>
</tomcat-users>
并且 web.xml 配置如下:
<listener>
<listener-class>com.WebSocketServletListener</listener-class>
</listener>
<security-constraint>
<display-name>Tomcat Server Configuration Security Constraint</display-name>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<url-pattern>/application.jsp</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>role1</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>Cloud Authentication</realm-name>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/error.jsp</form-error-page>
</form-login-config>
</login-config>
与应用程序的连接有两个步骤:
我通过“login.jsp”记录我的应用程序,将我引向我的应用程序“application.jsp”的单个页面。在 application.jsp 我可以知道与 request.isUserInRole("role1"); 连接的用户的角色;
application.jsp 使用服务器打开一个 WebSocket,该 webSocket 创建一个 session.java。所有通信都将通过 WebSocket 完成。问题出在 webSocket 的上下文中,我不知道我的用户的角色。
在 webSocket 的会话中恢复所有用户信息的最佳方法是什么?