【问题标题】:how to add authentication in webapi?如何在 web api 中添加身份验证?
【发布时间】:2015-04-12 23:37:03
【问题描述】:

我已经实现了没有身份验证的 webapi,它运行良好。 但现在我想实现 WebAPI 的授权。

我尝试使用“个人用户帐户”创建新项目并将我的控制器文件添加到控制器文件夹,然后在控制器文件中添加 <Authorize> 但它仅适用于此默认数据库。

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-IRAApi-20150211114242.mdf;Initial Catalog=aspnet-IRAApi-20150211114242;Integrated Security=True"
          providerName="System.Data.SqlClient" />

我只想为相同的功能设置我自己的数据库。 我的数据库与默认数据库具有相同的表名。

或者有没有其他方法可以做到这一点 如果人员已登录,则生成访问令牌,然后人员可以访问 Web api,否则不能。

我正在开发 Visual Studio 2013 和 dotnet 框架 4.5。

【问题讨论】:

    标签: .net vb.net authentication asp.net-web-api access-token


    【解决方案1】:

    我将使用“Web API”模板创建一个新项目(不是空的,也不是检查了 Web API 的 MVC)。如果您选择“个人用户帐户”,它将生成基于令牌的身份验证的基础设施。它还会自动生成帮助 API,因此您可以导航到:

    http://localhost:[port]/help/

    查看文档。该模板构建了密码类型授权,因此您可以将新用户发布到 /api/Account/Register,然后使用大类型“密码”和用户名和密码将新用户发布到 /Token 登录。

    要查看此操作,请观看此视频: https://channel9.msdn.com/Series/Web-API-Design/05

    源代码可在 GitHub 上获得: https://github.com/MicrosoftLearning/WebAPIDesign/tree/master/05%20-%20Security/05cTokenBasedAuthentication

    您可能正在寻找的主要代码位于 App_Start/Startup.Auth.cs 下:

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

    整个模块从前到后涵盖安全性。

    【讨论】:

    • 正如我在一个问题中提到的,我已经尝试过“个人用户帐户”,但这仅适用于项目自动生成的默认数据库,我想使用我自己的数据库而不是默认数据库.只改变连接字符串是行不通的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 2017-11-04
    • 2018-05-29
    • 1970-01-01
    • 2022-11-25
    • 2017-10-22
    • 2016-11-13
    相关资源
    最近更新 更多