在我的情況(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