在我的asp.net核心应用程序中,用户需要使用Google OAuth登录。使用VS2017生成的代码并启用Google身份验证,此部分工作正常。如何删除asp.net身份管理数据库表?
我遇到的问题是,默认情况下,应用程序会创建一堆与asp.net用户和角色相关的数据库表。我真的不需要在这些表格中保存任何信息。我只关心电子邮件和名称,并通过OAuth获取这两个值。
如何完全禁用ASP.NET自己的身份管理?
默认生成的代码定义AccountController
类的方法ExternalLoginCallback
。相关的行是:
var info = await _signInManager.GetExternalLoginInfoAsync();
var result = await _signInManager.ExternalLoginSignInAysnc(...);
return RedirectToLocal(returnUrl);
我猜我需要摆脱第二行。它是否正确?
最后,我仍然需要一个ApplicationUser
的实例,我应该可以从代码的任何部分访问它。我将它存储在会话对象中还是有更好的方法?问候。
实例非常感谢您的帮助。但是,它看起来像是在调用_signInManager.GetExternalLoginAsync和_signInManager,ExternalLoginSignInAsync之间需要的东西。否则,第二次呼叫失败。以前,中间有两个调用 - _userManager.CreateAsync和_userManager.AddLoginAsync。问候。 – Peter
@Peter如果您使用独立Cookie身份验证,则不应使用signInManager或userManager,因为它们是ASP.NET Core Identity的一部分。你可以参考[这个项目](https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers/tree/experimental/samples/Mvc.Client)来了解如何获得所需的信息。 –
谢谢你的帮助。我们的要求是,用户必须使用Google oAuth进行身份验证。有没有更简单的方法来运行oAuth而不使用siginManager调用?谢谢。 – Peter