我正在开发一个ASP.NET MVC Web应用程序。该应用程序正在使用REST API,但REST完整应用程序的身份验证对我来说还不太清楚。
由于REST是无状态的,我是否必须使用两个不同的数据库实现两个不同的身份验证,一个用于客户端,一个用于REST服务?
或者,每次都必须发送登录名/密码,以便在服务器上进行身份验证吗?
请给我一些建议或教程。
答案 0 :(得分:4)
您可以使用存储在数据库中的各个用户帐户对Web API进行身份验证。 在这种情况下,客户端应首先获取访问令牌。然后将其包含在每个请求中,这需要授权,标题:
Authorization: Bearer boQtj0SCGz2GFGz[...]
可以找到好的教程HERE
此外,可以使用Cookie或某些external身份验证方法(Google,Facebook等)在Startup.Auth.cs中扩展身份验证方法
答案 1 :(得分:0)
在您的情况下,无状态不是主要问题,问题是浏览器只能以标签格式以传统方式发送GET或POST请求,因此要发送PUT或DELETE请求您应该使用Ajax,最简单的方法是使用JQuery库并将其配置为在每个请求中的http头(在可以存储在cookie中的请求之间)中发送用户凭据,如果您计划使用自己的身份验证逻辑,则使用基本身份验证。我建议您查看一些SPA框架,例如angularjs 或emberjs 或backbonejs 从硬编码JavaScript简化您的生活。同样在将来,您可以通过OAUTH 2.0轻松扩展您的身份验证。