Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何使用MVC将User.Identity添加到会话(或其他内容)_Asp.net Mvc_Windows Authentication - Fatal编程技术网

Asp.net mvc 如何使用MVC将User.Identity添加到会话(或其他内容)

Asp.net mvc 如何使用MVC将User.Identity添加到会话(或其他内容),asp.net-mvc,windows-authentication,Asp.net Mvc,Windows Authentication,我正在通过以前的webforms应用程序将其转换为MVC,但有一个大问题,我似乎找不到任何好的参考资料。我希望能够捕获用户的身份(web.config中的windows auth集),但在global.asax中,我似乎无法访问会话(但我可以获取身份信息)。或者,当我在控制器的基类中工作时,我无法访问构造函数中的httpContext(但我可以访问会话) 有人能很好地解决这个问题吗?在以前的webforms中,我有一个母版页,该母版页根据您的id/etc进行了一些验证并设置了一些会话变量。通过使

我正在通过以前的webforms应用程序将其转换为MVC,但有一个大问题,我似乎找不到任何好的参考资料。我希望能够捕获用户的身份(web.config中的windows auth集),但在global.asax中,我似乎无法访问会话(但我可以获取身份信息)。或者,当我在控制器的基类中工作时,我无法访问构造函数中的httpContext(但我可以访问会话)


有人能很好地解决这个问题吗?在以前的webforms中,我有一个母版页,该母版页根据您的id/etc进行了一些验证并设置了一些会话变量。通过使用这行代码,您始终可以访问会话或任何其他基于httpContext的实体,只要它们已经被实例化

HttpContext.Current.Session
HttpContext.Current.Request
HttpContext.Current.Server
...etc
而且,您应该始终能够访问用户和标识信息,而不需要将其保存到会话中,除非您对标识进行修改并单独存储这些修改

HttpContext.Current.User.Identity

这就是我所想的,但是当我在global.asax的上下文中查看httpcontext.current.session时,它是空的——当我在基本控制器中时,我的controllercontext(和httpcontext)是空的,所以我无法获得标识(我缺少什么吗?)我需要在控制器中做一些特殊的事情来正确初始化基本控制器吗,我必须承认,我对MVC框架了解不够,无法就此发表权威性的言论。但是,从全局asax,只要这些对象已经实例化,您肯定应该可以访问它们。当你尝试它时,你会根据哪些事件采取行动。例如,应用程序\u start没有用户,默认情况下不会有会话。另一方面,Session\u start应该。这是我的问题,Session\u start确实可以访问Session,但不能访问所需的标识值。BeginRequest可以访问标识,但会话为空。。。有什么方法可以同时使用这两种方法吗?我的最终解决方案感觉很肮脏。。。在authRequest方法中,我捕获身份并设置一个私有变量-然后在会话\u start中执行身份验证工作。。。伙计,我需要在这个解决方案上投入更多的时间(谢谢你的帮助!)你能发布一些代码给我们一些上下文吗?为什么在控制器构造函数中需要HttpContext?你在Global.asax做什么?