ASP.NET MVC 5和WebApi 2身份验证

时间:2015-08-05 03:31:19

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

我最近将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实例中存储用户,声明等。

2 个答案:

答案 0 :(得分:2)

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

如果您想在MongoDB上保留用户数据,那么最好的解决方案就是滚动您自己的UserStore以实现至少IUserStore和IUserRoleStore接口,或使用this nuget包

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

您正在使用它的开源代码的Asp.net标识,您可以查看codeplex(github上的那个用于mvc 6)。

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

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

希望这有帮助!

答案 1 :(得分:1)

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

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