【问题标题】:ASP.NET MVC 5 and WebApi 2 AuthenticationASP.NET MVC 5 和 WebApi 2 身份验证
【发布时间】:2015-12-16 01:04:37
【问题描述】:

我最近构建了一个 MVC 5 网站作为前端原型,并使用个人帐户进行身份验证。我现在需要构建一个 WebApi2 后端,该后端将为该网站、一个 iPhone 应用程序和多个其他客户端提供服务。我对使用 MVC 站点和 WebApi 进行身份验证感到困惑。

我希望所有用户管理都通过 WebApi(它将使用令牌)进行,因此它与客户端无关,但是我不知道如果没有我的 Identity 类,网站端的 Cookie 身份验证将如何工作。似乎我将使用 MVC 站点和 WebApi 复制代码。我想为 mvc 站点使用 cookie,为 webapi 使用 oauth 令牌。我是否需要创建另一个像 IdentityProvider 这样的项目来管理它?或者是否有一种仅使用 MVC 和 WebApi 项目来实现这一点的干净方法。谢谢!

编辑:我主要对如何管理用户身份以及用户能够通过 MVC 站点和 WebApi 请求登录感到困惑。我需要能够以统一的方式生成 UserIdentity 和声明,当我同时使用 MVC 个人帐户模板和 WebApi2 个人帐户身份验证模板时,我感到很困惑。我想在 AWS 托管的 MongoDB 实例中存储用户、声明等。

【问题讨论】:

  • 你是如何实现这个的。我有这种情况。请分享。见My Question
  • 我使用 IdentityServer 实现的,这是一个很棒的开源项目

标签: c# asp.net-mvc authentication asp.net-web-api oauth-2.0


【解决方案1】:

两个模板(mvc 和 api)都使用 SigninManager 和 UserManager。它基于 SQL Server 和实体框架的标准用户管理器实现。

如果你想在 MongoDB 上维护用户数据,最好的解决方案是推出你自己的 UserStore 以至少实现 IUserStore 和 IUserRoleStore 接口,或者使用this nuget 包

对于 UserManager,您可以使用标准实现。

您使用的 Asp.net 身份是开源的,您可以在 codeplex 上查看(github 上用于 mvc 6 的那个)。

我认为处理您的场景的最佳方法是:

  • 对于网站登录,对于标准 Web 用户,在 标准 mvc 控制器,让 SignInManager 完成工作;你 可以使用模板自带的标准登录方式
  • 对于api登录,实现一个简单的OAuthAuthorizationServerProvider 并覆盖 GrantResourceOwnerCredentials 方法; this 是一篇很好的文章,向您展示了所有步骤

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    将成员资格提供程序视为独立于用于开发应用的技术。身份验证是身份验证,它不依赖于特定技术。

    http://www.asp.net/identity/overview/getting-started/aspnet-identity-recommended-resources

    【讨论】:

      猜你喜欢
      • 2014-03-20
      • 1970-01-01
      • 2016-06-07
      • 1970-01-01
      • 2016-06-17
      • 2014-01-02
      • 2014-04-05
      • 2017-08-15
      • 1970-01-01
      相关资源
      最近更新 更多