大佬教程收集整理的这篇文章主要介绍了asp.net-mvc – ASP.NET MVC身份默认实现,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
public AccountController(ApplicationUserManager userManager,ApplicationSignInManager signInManager ) { UserManager = userManager; SignInManager = signInManager; } private ApplicationUserManager _userManager; public ApplicationUserManager UserManager { get { return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>(); } private set { _userManager = value; } }
和Startup.Auth.cs中的这一行
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
我想了解什么机制将userManager参数传递给构造函数.我相信在这里使用dependendy注射模式.
如果我是正确的,我可以在Visual Studio解决方案中找到负责依赖注入的代码吗?
对于UserManager部分,我们为什么要测试_userManager是否为null,如果它已在控制器中设置的话?
您可以在此blogpost中深入了解此机制的工作原理.
关于你完全理解的其他问题!如果注入依赖项,为什么要检查null?好吧:那是因为Owin在这里被用作穷人的DI机制,你在默认项目模板中看到的实际上是一个带有service locator anti pattern气味的回退机制.因为使用Owin而不是一个体面的DI容器,MVC管道需要一个默认构造函数,因此需要检查null和服务定位器. MVC如何决定使用哪个构造函数对我来说并不清楚.但我发现用户管理器有时会被注入,而在其他场景中则为null.可能是因为owin上下文大部分时间仅在创建Account控制器后可用.
虽然模板开箱即用,但它确实会让我的眉毛移动,就像移动你的模板一样.所以我带着一个像样的DI容器的干净实现,并删除了大部分owin服务定位器的东西.
如果您感兴趣,可以找到我使用Simple Injector的解决方案here.还有其他DI容器here的解决方案
以上是大佬教程为你收集整理的asp.net-mvc – ASP.NET MVC身份默认实现全部内容,希望文章能够帮你解决asp.net-mvc – ASP.NET MVC身份默认实现所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。