我期待在使用ASP.NET Web API时从客户端应用程序验证用户 . 我观看了网站上的所有视频,还阅读了this forum post .
正确放置 [Authorize]
属性将返回 401 Unauthorized
状态 . 但是,我需要知道如何允许用户登录API .
我想从Android应用程序向API提供用户凭据,让用户登录,然后对所有后续API调用进行预先验证 .
我期待在使用ASP.NET Web API时从客户端应用程序验证用户 . 我观看了网站上的所有视频,还阅读了this forum post .
正确放置 [Authorize]
属性将返回 401 Unauthorized
状态 . 但是,我需要知道如何允许用户登录API .
我想从Android应用程序向API提供用户凭据,让用户登录,然后对所有后续API调用进行预先验证 .
3 回答
您需要发送有效的表单身份验证cookie以及请求 . 此cookie通常由服务器在通过调用
[FormsAuthentication.SetAuthCookie
方法进行身份验证(LogOn
action)时发送(请参阅MSDN) .所以客户需要执行两个步骤:
通过发送用户名和密码向
LogOn
动作发送HTTP请求 . 反过来,此操作将调用FormsAuthentication.SetAuthCookie
方法(如果凭据有效),这反过来将在响应中设置表单身份验证cookie .通过发送在第一个请求中检索到的表单身份验证cookie,向
[Authorize]
受保护的操作发送HTTP请求 .我们来举个例子吧 . 假设您的Web应用程序中定义了2个API控制器:
第一个负责处理身份验证:
第二个包含受保护的操作,只有授权用户才能看到:
现在我们可以编写一个使用此API的客户端应用程序这是一个简单的控制台应用程序示例(确保已安装
Microsoft.AspNet.WebApi.Client
和Microsoft.Net.Http
NuGet包):以下是2个HTTP请求在线路上的显示方式:
验证请求:
认证响应:
请求受保护的数据:
受保护数据的响应:
我以android为例 .
请注意:i.localhost不能使用 . Android设备将localhost视为自己的主机 . ii . 如果在IIS中部署Web API,则必须打开表单身份验证 .
使用此代码和访问数据库