我看过很多关于用户认证和授权的教程,其中大多数都使用基于表单的认证(j_security_check)和@RolesAllowed进行授权和jdbcRealm。
因此,如果授权必须工作,我必须从客户端向服务器发送HTTP请求。但是我想要的是发送正常的 websocket 请求,如果我未经授权访问该方法(基于 @RolesAllowed 参数),我应该得到一个异常。
任何帮助将不胜感激。
您可以使用基本身份验证。 使用 Base64 对您的用户名:密码进行编码,并将其发送到请求标头的授权字段中。然后在服务器上对每个请求进行解码和身份验证。如果资源在未经身份验证的情况下应可用,请使用 @PermitAll
。否则使用 @RolesAllowed({"role1","role2"})
。
您可以从请求标头中获取字段,如下所示:
request.getHeaderValue("Authorization");