私の状況(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>
アプリケーションへの接続には、次の 2 つの手順があります。
「login.jsp」を介してアプリケーションをログに記録し、アプリケーション「application.jsp」の単一ページを参照します。application.jsp では、request.isUserInRole("role1"); で接続されたユーザーのロールを知ることができます。
application.jsp はサーバーで WebSocket を開き、webSocket は session.java を作成します。すべての通信は WebSocket を介して行われます。問題は、ユーザーの役割がわからない webSocket のコンテキストにあります。
webSocket のセッションですべてのユーザー情報を回復する最善の方法は何ですか?