Java 使用自定义身份验证的Spring引导安全性&;会话存储

Java 使用自定义身份验证的Spring引导安全性&;会话存储,java,spring-boot,Java,Spring Boot,我正在为一个单页应用程序Vue尝试简单的Spring引导应用程序,其中web服务器应该回答所有/api、/auth/login和/auth/logout请求,没有任何视图,只有JSON响应,就像REST api一样 为了让事情变得简单,我需要一个用户名和密码身份验证,但由Vue前端调用。当我使用.formLogin()时,Spring Security会创建一个带有JSESSIONID的cookie,但它可能在内存中 很抱歉,如果问题不合适,但我总是发现相互冲突的方法,并且由于缺乏知识而很快迷失

我正在为一个单页应用程序Vue尝试简单的Spring引导应用程序,其中web服务器应该回答所有
/api
/auth/login
/auth/logout
请求,没有任何视图,只有JSON响应,就像REST api一样

为了让事情变得简单,我需要一个用户名和密码身份验证,但由Vue前端调用。当我使用
.formLogin()
时,Spring Security会创建一个带有
JSESSIONID
的cookie,但它可能在内存中

很抱歉,如果问题不合适,但我总是发现相互冲突的方法,并且由于缺乏知识而很快迷失方向:

  • 是否需要Spring会话,或者如何扩展它以存储在我自己的自定义存储库中
  • formLogin()
    是正确的选择,还是应该使用其他方法
  • Spring会话依赖项()不需要手动添加到类路径,因为它是由Spring安全性完成的。但是,如果您希望自定义会话管理,例如更改内存中的默认值
    SessionRepository
    类或会话cookie名称,则应该添加它
  • formLogin
    是正确的选择之一,但您需要对其进行配置,以替换默认的spring安全行为。与中一样,配置
    HttpSecurity
    bean,以便使用您的
    /auth/login
    /auth/logout
    值更改默认的
    /login
    /logout
    端点路径。您可能还需要在这个bean中配置其他东西,例如添加配置,所以您的API服务器将以401HTTP状态响应,而不是重定向到登录页面

  • 谢谢你的回答。除了formLogin之外,还有其他方法可以使用自定义的JSON POST正文,而不是x-form编码的吗?我怀疑是否有一个标准的解决方案可以接受JSON正文中的凭据。我能想到的spring安全性中最接近的东西是httpBasic,因此您可以将任何api请求作为json正文发送,并且该请求使用存储用户凭据的授权头进行授权。如果您需要在请求体中以json形式发送凭据以验证用户身份,那么您可能必须自己实现它让我们看看后端的代码,特别是您的安全配置文件