RESTful API中的认证如何处理,以及如何保证无状态?
1、看到网上说使用token,在登录的时候,通过https://xxx/login/这个类似的接口生成一个token,并在以后的每次请求中带上那个token(使用authorization头部),服务端对每个请求都进行这个token的验证,那这个token如何生成以及在服务端如何验证(希望能详细一点,或者有比较好的参考)?
2、使用上述的方法,能否保证REST的无状态性呢?
3、假设使用authorization头部是无状态的,这里我有个想法,在登录成功后,生成一个唯一的key,并将这个key保存到数据库中,并存到cookie中,以后的每次请求都带上这个cookie,服务端验证数据库中是否存在这个key,存在表示已登录,不存在表示未登录,并在登出时,从数据库中删除这个key。这种是否也是无状态的呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
RESTful 中,认证一般通过认证串 AuthToken 的形式进行认证。认证串一般放置在 HTTP 请求头的 Authorization 字段中。服务器根据传来的认证串进行认证即可。
无状态主要由 HTTP 协议来保证,因为 HTTP 协议本身就是无状态的。当然,前提是你要正确使用 HTTP 协议的无状态。比如 有一个功能是上传相册图片,并保存排序。如果这个功能设计为两个,一个是上传图片,一个是排序,那就不能把这两个接口设计成带有先后顺序的(有顺序既代表有状态),也就是说,即使设计两个接口,两个接口也必须是独立的,不会因为调用了上传而没调用排序就出问题,反之也是。
authToken 是服务器上生成,在服务器端保存了一张表,记录Token和用户的对应关系。当用户请求传过来后,用这个token在表上面查找,就可以定位到你是那个用户了。