在我的情况(Tomcat)的我使用Tomcat-users.xml中管理用户和角色如何将http会话的角色传递给websocket?
<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的会话中恢复所有用户信息的最佳方法是什么?
是的,它正在与tomcat合作。谢谢 – Chris
我仍然有一个问题...我如何从请求中获取用户的所有角色。我可以检查他是否与'isUserInRole'有关,但我不知道如何做'getAllRoles'。这个想法是设置用户的所有角色连接到一个类实例'UserConnected'的变量'角色' – Chris
获得所有角色在servlet规范中不被支持。你必须提前知道你需要什么样的角色。角色可以通过web.xml映射到其他角色 – spy