gpt4 book ai didi

visual-studio-2013 - VS2013 (RTW) : Authentication differences in SPA template vs MVC5 template?

转载 作者:行者123 更新时间:2023-12-02 04:47:46 28 4
gpt4 key购买 nike

我一直在 VS2013 RTW MVC 模板(用于“个人用户帐户”)中使用新的 ASP.NET 身份产品,并且效果很好:我能够在自定义数据方式的同时集成 Facebook 登录连载。

一切都很好,但我注意到如果我创建一个新的 SPA 应用程序(而不是 MVC),身份验证过程似乎会大不相同。例如:

来自 SPA 模板:

    public AccountController()
: this(Startup.UserManagerFactory(), Startup.OAuthOptions.AccessTokenFormat)
{
}

public AccountController(UserManager<IdentityUser> userManager,
ISecureDataFormat<AuthenticationTicket> accessTokenFormat)
{
UserManager = userManager;
AccessTokenFormat = accessTokenFormat;
}

来自 MVC 模板:

    public AccountController()
: this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())))
{
}

public AccountController(UserManager<ApplicationUser> userManager)
{
UserManager = userManager;
}

这只是Account controller构造函数的不同。还有许多其他差异。使用 MVC 版本,我能够轻松地从 ApplicationDBContext 派生出我自己的上下文类,并使用它来将我自己的表与身份验证表一起存储。我不知道如何在 SPA 模板中自定义数据存储。

另外,SPA 模板包括并使用了这个类: 公共(public)类 ApplicationOAuthProvider : OAuthAuthorizationServerProvider

MVC 模板没有定义(或使用)这个类。

我不明白为什么 MVC 模板和 SPA 模板之间需要有任何区别。

谁能给我一些指导,说明为什么这两个模板中的身份验证处理方式如此不同?从头开始一个项目,两者之间是否有首选路径? (似乎 MVC 模板中的代码是最好的,尤其是在通过定义自定义 EF 上下文类来自定义数据存储方式方面。)

谢谢...

-本

最佳答案

以MVC和SPA项目模板作为Controller vs ApiController实现示例。以及 CookieAuthentication 和 oAuthAuthentication。

  • MVC 在第一个请求以及所有后续请求(具有请求定义的操作方法)中使用 Controller 。
  • SPA 在向 SPA 发出第一个请求时使用 Controller,所有其他交互均由 ApiController 处理。
  • MVC 使用 cookie 身份验证。
  • SPA 使用 oAuth 身份验证。

现在在实际应用中,我们需要将两者结合起来。说明这一点,您也可以在 SPA 中使用 IdentityModel.cs (ApplicationDBContext) 及其自定义的 MVC 项目副本。

在 oAuth 实现中, token 是在 ApplicationOAuthProviderGrantResourceOwnerCredentials 方法中颁发的。用户验证默认使用Identity framework同一个数据库。此外,oAuth 在 ApiController 中提供身份验证检查。在示例实现中,提供了 oAuth 的 ResourceOwner 流程​​,用于验证用户的用户名和密码。

在我看来,模板是起点示例。

关于visual-studio-2013 - VS2013 (RTW) : Authentication differences in SPA template vs MVC5 template?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19468858/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com