ASP.NET Web API登录方法

Bas*_*mme 17 c# asp.net asp.net-web-api

我想使用ASP.NET Web API构建RESTful Web服务,第三方开发人员将使用它来访问我的应用程序的数据.

在Visual Studio中,我决定创建一个新的ASP.NET项目.我按照本教程,但我选择了另一个模板:Web API模板.我使用MySQL数据库和标准用户角色表,如教程中所述.

该模板带有许多非常有趣的方法来注册新用户,但没有默认的登录请求.我在不理解我在做什么的情况下写了这篇文章:

    // POST api/Account/Login
    [Route("Login")]
    public IHttpActionResult Login(LoginBindingModel model)
    {
        ClaimsIdentity ci = new ClaimsIdentity();
        // ...
        // ...
        Authentication.SignIn(ci);
        return Ok();
    }
Run Code Online (Sandbox Code Playgroud)

我已经阅读了很多关于安全性的文章而没有找到一个很好的样本,文档解释了它的工作原理.在Web API中实现简单的登录方法似乎非常困难.

你能解释一下为什么这个模板中没有登录方法吗?你有一个登录方法的样本.我应该将哪些内容发送回客户端应用程序以验证请求.这是使用令牌吗?

dar*_*ffo 16

通常你所做的是在该方法中实现登录逻辑,并返回一个令牌,然后在每次调用api时验证该令牌.

您可以阅读此内容以获取更多信息

http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/

  • 实际上在阅读完你的文章后我发现没有Login方法,因为微软决定(重新)将其命名为Token.请参阅startup.cs中的ConfigureAuth方法 (8认同)

Ogg*_*las 8

如果您已创建新的ASP.NET Web Application- > Web API- >更改身份验证 - > Individual User Accounts.看看App_Start- > Startup.Auth.cs.

它应该包含这样的东西:

PublicClientId = "self";
OAuthOptions = new OAuthAuthorizationServerOptions
{
    TokenEndpointPath = new PathString("/Token"),
    Provider = new ApplicationOAuthProvider(PublicClientId),
    AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
    AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
    // In production mode set AllowInsecureHttp = false
    AllowInsecureHttp = true
};

// Enable the application to use bearer tokens to authenticate users
app.UseOAuthBearerTokens(OAuthOptions);
Run Code Online (Sandbox Code Playgroud)

这意味着您可以发送访问令牌请求,示例请求:

在此输入图像描述

然后,您可以验证访问令牌是否有效:

在此输入图像描述

使用此令牌,您现在可以访问用户有权访问的所有受保护资源.