在经典的JSP或PHP应用程序中,可以通过以下过程维护用户会话
1(首次访问资源时,请挑战用户使用UserId&密码。
2(如果凭据是正确的,请成功身份验证用户并创建会话ID
3(将SessionID附加到标头,并通过请求的信息将响应发送给用户。
4(根据用户的后续请求,服务器检查标题中的有效sessionID
5(如果SessionID有效并且未过期,则无需进行身份验证,并且允许用户执行请求的操作。
上面的全部要点是用户只输入一次凭据一次。
但是,如何在休息完整的设计中实现这一目标,其中通过Ajax/jQuery调用访问资源。与经典的JSP一样,如果我希望用户只输入一次凭据,该如何实现(至少我不知道如何将header(即SessionID(带到服务器到服务器使用AJAX请求(
我正在使用 spring rentful Web服务 api带有 spring Security - I.E授权过滤器代理(Spring Security Filter链(具有基本的身份验证。我希望用户只能输入一次登录的凭据,然后随后的AJAX请求对服务器上的RESTFULS进行登录,可以自动能够发现最近登录了用户,并且应允许在需要的情况下对RESTFULES上的请求操作执行请求的操作。重新认证。
首先,您需要配置 Spring Security
,因此覆盖了您的REST API
,这是有关如何执行此操作的示例之一 - REST API的Spring Security。
保持用户身份验证的方法之一是将会话ID存储在cookie或任何其他存储中,这种方式后端可以对其进行验证。在后端,REST API
应该无状态。因此,最好的方法是在某些会话表中将会话ID保留在数据库中(Redis
是这种情况的通常解决方案(。
如果您想设计一个REST API
,我将在每个AJAX
调用中解释的标题中发送会话ID。一种API方法应对用户进行身份验证并提供令牌(或会话ID(,该方法应由客户端存储在某个地方(例如Cookie(。所有其他方法都应要求它能够访问资源。登录用户时,应删除此值,并且用户不应访问资源。