使用Identity 2对用户进行身份验证后,我想在Session中保留一些关于他或她的信息。我可以在立即动作方法中访问Session,这是我将用户重定向到它的那个,但之后却没有。
这是代码:
ClaimsIdentity ident = await UserManager.CreateIdentityAsync(Login,
DefaultAuthenticationTypes.ApplicationCookie);
AuthManager.SignOut();
AuthManager.SignIn(new AuthenticationProperties
{
IsPersistent = true
}, ident);
HttpContext.Session["var"] = "data";
return RedirectToAction("Index", "Home");
到目前为止,我已经尝试了以下步骤:
我已在Session
[1]中手动添加了web.config
。
我已将runAllManagedModulesForAllRequests
设为true
。
Session.SessionId
,在当前会话的不同请求中它是相同的。这是web.config
,它没有与会话相关的任何内容,我手动添加了它们。
<system.webServer>
<modules>
<remove name="Session"/>
<add name="Session" type="System.Web.SessionState.SessionStateModule"/>
</modules>
</system.webServer>
我正在尝试在IIS Express上调试应用程序,但我还没有尝试过IIS。
我可以访问帐户控制器中的会话变量来处理日志记录和Home控制器,这是我将用户重定向到的位置,但不是任何其他控制器。我应该注意,如果我第二次刷新页面到家庭控制器,会话变量就会丢失。换句话说,他们没有得到保留。
我刚刚发布了该应用并在IIS上尝试过,它似乎在那里工作正常
我们非常感谢任何可能的解决方案和调试指南。 :)
答案 0 :(得分:0)
您缺少sessionState元素,您添加了模块,但未对其进行配置。
此外,您需要使用SessionState Behavior属性修饰控制器操作。
[SessionState(SessionStateBehavior.ReadOnly)]
或 [SessionState(SessionStateBehavior.Required)]