【发布时间】:2018-03-12 12:23:41
【问题描述】:
您好,我是 Spring 和 Spring Security 的新手。目前我正在春季研究rest api。根据 spring 提供 rest api。 rest api 是无状态的,所以我们不能创建会话来休息 api。因为如果我们这样做是无状态的,那么它就违背了其余的设计。所以我的问题是,我们可以永远保持服务器端用户的状态吗? 我们可以在客户端保持它吗?怎么样?? 在spring basic security中我们登录并获取当前用户使用原理。 spring rest 身份验证中的相同情况。所以在 rest api 的情况下,所有需要的是当前登录的用户?。如果 spring rest api 是无状态的,那么 spring security 如何维护当前登录的用户。我读了一些关于 spring 的块,通过它我们使用基于令牌的身份验证,我们可以在其中发送用户名和密码,然后我们获取令牌,并且每次我们请求发送该令牌并知道发送当前请求的用户。令牌存储在 cookie 中。所以cookie存储在客户端。在这种情况下,如果浏览器禁用 cookie,我们如何验证用户和当前登录的用户?
【问题讨论】:
-
在真正的 RESTful 环境中没有登录,您只需通过
Authorization标头在每个请求中提供用户凭据和密码。在 Spring 安全性中,您可以添加一个basicAuth()指令,该指令检查传入请求的此标头的可用性,并且它的值与Basic ${base64enc(username:password)}匹配,它将解码 base64 值并拆分凭据以便从中查找用户用户详细信息服务并将其添加到您可以访问它的安全上下文中 -
那么在这种情况下,spring security 是否可以全部使用?
-
取决于您的需求。理论上它可以,虽然我通常倾向于至少提供一个自定义的 UserDetailsService 和一个 AuthenticationProvider,因为我用域特定的属性和设置丰富了实际的 UserDetails 对象。
标签: spring rest spring-mvc spring-security