有没有一种方法可以从.NETCore中的外部库进行登录(身份验证,或者更好的是通用登录)?
问题是您需要知道用户类(TUser)才能从DI获取SignInManager,而对于外部组件(例如控制器i独立库)来说,这是未知的 另外,是否有任何官方方法来检查是否将身份添加到中间件链中 更新-由于一些混乱: 如果您开发了自己的框架,其中包含使用标识进行授权的后端,是否可以编写一个登录控制器/视图,该控制器/视图包含在您的库中,并且仍然允许使用您的框架的开发人员使用自己的用户类等扩展标识框架,DbContext等等 我的主要问题是如何在不知道底层泛型用户类的情况下(从DI)获得SignInManager有没有一种方法可以从.NETCore中的外部库进行登录(身份验证,或者更好的是通用登录)?,.net,asp.net-core,asp.net-identity,.net,Asp.net Core,Asp.net Identity,问题是您需要知道用户类(TUser)才能从DI获取SignInManager,而对于外部组件(例如控制器i独立库)来说,这是未知的 另外,是否有任何官方方法来检查是否将身份添加到中间件链中 更新-由于一些混乱: 如果您开发了自己的框架,其中包含使用标识进行授权的后端,是否可以编写一个登录控制器/视图,该控制器/视图包含在您的库中,并且仍然允许使用您的框架的开发人员使用自己的用户类等扩展标识框架,DbContext等等 我的主要问题是如何在不知道底层泛型用户类的情况下(从DI)获得SignInMa
希望这能让事情变得更清楚:)找到了某种解决方案/解决方法。。。 您仍然需要知道用户类型(但不一定是在运行时),然后您可以从DI获得signInManager,执行如下操作:
var userType = typeof(ApplicationUser);
var signInManagerType = typeof(SignInManager<>).MakeGenericType(userType);
var signInManager = ServiceProvider.GetServices(signInManagerType);
var userType=typeof(ApplicationUser);
var signInManagerType=typeof(SignInManager).MakeGenericType(userType);
var signInManager=ServiceProvider.GetServices(signInManagerType);
Identity是通用中间件,允许您使用各种提供者进行身份验证。至于问题文本——问题不清楚。你在说什么问题?什么外部组件?标识远非通用:)您可以使用windows、cookie或其他完全不同类型的身份验证。对于外部组件,我指的是我自己的代码……重新设计您的架构。当您认为需要从库登录时,您的设计就有很大的缺陷。仅供参考:ASP.NET核心是一个web应用程序(强调web),你不“从库”登录,而是通过http请求登录,这是今年最有缺陷的答案:D你怎么能仅仅知道我写了什么就得出这个结论@它已经支持了很多东西。我怀疑你误解了身份是什么。它的提供程序模型支持任何类型的身份验证,只要您有适当的提供程序。而且它已经支持很多提供商-文档向您展示了如何配置Windows身份验证、Google、Facebook、本地帐户以及如何创建自己的提供商