【问题标题】:webapi rest... is best practivce to avoid SESSIONweb api rest... 是避免 SESSION 的最佳实践
【发布时间】:2016-11-25 11:35:41
【问题描述】:

我正在为客户端使用 ExtJS 创建我的第一个 webapi 项目,并尝试了解登录过程。我试图了解 SESSION 的用途,如果我使用 REST,SESSION 不应该是其中的一部分。

REST 的设计是无状态的。通过添加会话(或任何其他类型的),您将使其成为有状态的,并破坏了拥有 RESTful API 的任何目的。 RESTful 服务的整体理念是,每个资源都可以使用通用语法进行唯一寻址,以用于超媒体链接,每个 HTTP 请求本身应该携带足够的信息,以便其接收者对其进行处理,从而与 HTTP 的无状态特性完全一致。” .

我对会话有点困惑......通常,当用户登录时,sessionID 会记录在服务器上的某处?然后,当用户发出另一个请求时,url 将此 sessionID 发送回服务器,如果 ID 有效,则继续请求。 我有这个权利吗?

另一方面,请求消息基本上每次发送请求时都会发送用户名/密码。

我有这个权利吗?在我的 webapi 上使用 REST,我可以跳过 SESSION 的整个概念并继续发送用户名/密码......还是有更好的方法?

【问题讨论】:

    标签: rest session asp.net-web-api


    【解决方案1】:

    我可以跳过 SESSION 的整个概念并继续发送吗 用户名/密码...还是有更好的方法?

    是的,Web API 具有基于令牌的授权 - 持有者令牌。通过使用它,您可以完全避免使用 Session State。

    Secure a Web API with Individual Accounts and Local Login in ASP.NET Web API 2.2

    简而言之,当用户成功通过身份验证时,服务器会发出令牌而不是会话状态。然后每个请求,用户都会发送相同的令牌以及有效负载。

    【讨论】:

    • 感谢@Win。我会检查那个教程。至于对SESSION的理解,我上面的描述理解正确吗?此外,这种方法,“OAuth2 个人帐户。该应用程序使用会员数据库”,这是首选方式,而不是每次都发送用户名/密码?...并且有利于公众访问 Web 应用程序?
    • 我们不会每次都发送用户名/密码;这就是为什么微软已经将熊令牌内置到 Web API (你不需要重新发明轮子)仅供参考: 始终使用 SSL。是否登录由您决定;我个人不喜欢创建一个帐户只是为了阅读。
    • 谢谢,那就是内置令牌!感谢您的信息!
    猜你喜欢
    • 2013-10-23
    • 2020-05-29
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    • 2018-04-27
    • 2012-02-19
    相关资源
    最近更新 更多