我希望从客户端应用程序验证用户,同时使用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调用进行预身份验证。
4条答案
按热度按时间1rhkuytd1#
允许用户登录到API
您需要随请求沿着发送有效的Forms身份验证cookie。此cookie通常由服务器在通过调用
[FormsAuthentication.SetAuthCookie
方法进行身份验证(LogOn
操作)时发送(请参见MSDN)。因此,客户端需要执行两个步骤:
1.通过发送用户名和密码向
LogOn
操作发送HTTP请求。这个动作将依次调用FormsAuthentication.SetAuthCookie
方法(如果凭证有效),该方法将依次在响应中设置表单身份验证cookie。1.通过沿着在第一个请求中检索到的表单身份验证cookie,向
[Authorize]
保护的操作发送HTTP请求。让我们举个例子。假设您在Web应用程序中定义了2个API控制器:
负责处理身份验证的第一个:
字符串
第二个包含只有授权用户才能看到的受保护操作:
型
现在我们可以编写一个使用此API的客户端应用程序。下面是一个简单的控制台应用程序示例(确保您已经安装了
Microsoft.AspNet.WebApi.Client
和Microsoft.Net.Http
NuGet包):型
下面是两个HTTP请求在网络上的样子:
身份验证请求:
型
验证响应:
型
请求保护数据:
型
受保护数据的响应:
型
vc6uscn92#
以Android为例。
字符串
请注意:localhost不能使用。Android设备将localhost视为自身主机。ii.如果在IIS中部署web API,则必须打开Form认证。
63lcw9qa3#
使用此代码并访问数据库
字符串
kkbh8khc4#
选择单用户身份验证-这将创建身份验证的数据库,以在App_Data>*.mdf sql文件中创建用户注册的用户存储在此表dbo.AspNetUsers -->请注意,密码以散列格式存储在此表中使用此它将有助于登录具有[Autorize]属性的网站-->它将调用自动创建的页面函数==> /API/account/register
注册页面脚本可以像下面的$(document).ready(function(){
字符串