Spring Security Remember Me REST web服务-如何使用持久令牌方法在200响应中返回令牌



我用Spring Security保护了我的rest web服务。我通过各种处理程序返回适当的响应(401表示失败,200表示成功,等等)。客户端不想将凭据存储在设备上,因此我无法通过在每个请求的标头中传递凭据来进行真正的restful每次请求身份验证。因此,我正试图用Remember me建立持久令牌方法。

我已经设置好了数据库表,可以登录了。登录在我的数据库的persistent_logins表中创建一行,该表包含系列&令牌值。

我的问题有两个:

  1. 我需要在successHandler类中添加什么,该类返回200响应用户也返回令牌(我需要序列值?)
  2. 当通过curl进行测试时,如何在头中设置此令牌

这是我的successHandler类:

public class RestAuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler{
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
                                    Authentication authentication) throws ServletException, IOException {
    response.setStatus(HttpServletResponse.SC_OK);
    clearAuthenticationAttributes(request);
}
}  

提前感谢您的帮助!

PersistentTokenBasedRememberMeServices将确保在响应(默认情况下为SPRING_SECURITY_REMEMBER_ME_COOKIE)上设置一个cookie,该cookie包含编码的序列和令牌值,因此您不需要在auth成功处理程序中为此设置任何额外的代码。当使用curl进行测试时,您只需要将此cookie发回即可。

如果您在响应中没有看到此cookie,请检查登录请求是否包含_spring_security_remember_me=true参数,该参数指示客户端实际请求了记住我功能,或者配置PersistentTokenBasedRememberMeServicesalwaysRemember属性,默认情况下为false。

最新更新