我必须开始在MVC 4和Web API中开发一个新项目。我之前有过MVC 4的经验,但是使用Web API,这将是我的第一个项目。据我所知,web api可供不同平台使用。
我有一些与web api相关的问题。我将它们呈现给你们如下:
1)我的第一个问题与用户身份验证有关。我查看了this SO问题并按照所选答案中给出的link1和link2进行了调查。我还有几个问题:
a)当我们通过表单身份验证进行用户身份验证时,我们会创建一个cookie,用于跟踪用户是否经过身份验证,但是使用web api我们不存储cookie,而是在内容标头中传递用户凭据。在这种情况下,我没有得到如何跟踪用户的登录状态?
b)我的另一个问题是限制未经授权的访问,如果我没有错,我认为我可以在上面提供的链接1和link2中找到。
c)我查看了Edward Brey的回答(在同一个SO问题中)以及身份验证,但我没有完全理解。
2)我的第二个疑问是关于混合表单身份验证和基本Http身份验证。登录时我是否可能使用表单身份验证然后使用web api我使用基本的http身份验证?如果是,那么请指导我。
我的问题可能听起来不合适,但请耐心等待我
答案 0 :(得分:0)
1.a)Restful API是无状态的,因此您无法跟踪用户的登录状态,而是发送为每个请求验证的凭据
1.b)是的,如果没有,网上有很多文章。授权过滤器可以帮助您实现这一目标。
1.c)简而言之,他提到了在执行API中的任何方法之前授权用户的简单逻辑。在执行控制器中的任何方法之前调用EnsureAuthenticated
,或者将该逻辑放入Authorize filter。
2)是的,你可以做到。在Restful API中,每个调用都可以是一个新实例,您可以使用api请求传递凭据,无论您使用哪个。
如果您继续讨论您提供的链接1,您将看到:
在我们的特定情况下,服务器通过编码生成身份验证令牌 串联的用户名和密码为Base64(与之相反 在文章中描述并通过一个发送回客户端 执行“登录”操作时的HTTP标头。然后是客户 存储此身份验证令牌并将其与每个后续请求一起发送 需要它。
如果身份验证令牌的格式众所周知(就像我的情况一样), 你也可以在客户端自己生成并发送它 没有服务器就可以完成这项工作。
您可以使用登录信息为客户端生成身份验证令牌,您可以将其用于发送附加到您的网络API请求。