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