【发布时间】:2013-10-28 10:19:44
【问题描述】:
我一直在使用 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 控制器的构造函数的区别。还有很多很多其他的差异。使用 MVC 版本,我能够轻松地从 ApplicationDBContext 派生我自己的上下文类,并使用它来将我自己的表与身份验证表一起存储。我不知道如何在 SPA 模板中自定义数据存储。
此外,SPA 模板包含并使用此类: 公共类 ApplicationOAuthProvider : OAuthAuthorizationServerProvider
MVC 模板没有定义(或使用)这个类。
我不明白为什么 MVC 模板和 SPA 模板之间需要有任何区别。
谁能给我一些指导,说明为什么这两个模板中的身份验证处理方式如此不同?从头开始一个项目,两者之间是否有首选路径? (似乎 MVC 模板中的代码是最好的,尤其是在通过定义自定义 EF Context 类来自定义数据存储方式方面。)
谢谢...
-本
【问题讨论】:
-
这很奇怪。据我了解,
OWin.Security旨在统一 ASP.Net 上的 Auth。至少后端。在前端,它们不同是有道理的。 MVC5 使用AccountController/AccountView处理 Auth。但是,SPA 的全部要点是您只有一个页面(单个控制器/视图)。所以我猜 auth 组件需要注入到您的 SPA 控制器中,而不是在单独的控制器中实现 auth ......只是我的两分钱。
标签: visual-studio-2013 asp.net-mvc-5 owin asp.net-identity katana