- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 asp.net webforms 应用程序/我需要做的是在用户登录时更改 ASP.NET_SessionId。
当用户登录时,我执行以下代码:
SessionIDManager Manager = new SessionIDManager();
string NewID = Manager.CreateSessionID(Context);
bool redirected = false;
bool IsAdded = false;
Manager.SaveSessionID(Context, NewID, out redirected, out IsAdded);
因此,SessionId 之后会发生变化。
但是,之后如果我写一些 session 变量,例如
Session["username"] = username;
然后回发后我们的数据会丢失或与旧 session ID 相关联。我们有
Session["username"] == null
请帮我看看如何在更改 SessionId 后写入 session 变量以使数据不会丢失?
最佳答案
命令“Manager.SaveSessionID”将删除旧sessionid的所有数据。只有一种方法可以保存数据。这是手动移动数据。您可以在登录按钮中使用以下功能:
...
using System.Web.SessionState;
using System.Reflection;
protected void ReGenerateSessionId()
{
SessionIDManager manager = new SessionIDManager();
string oldId = manager.GetSessionID(Context);
string newId = manager.CreateSessionID(Context);
bool isAdd = false, isRedir = false;
manager.RemoveSessionID(Context);
manager.SaveSessionID(Context, newId, out isRedir, out isAdd);
HttpApplication ctx = (HttpApplication)HttpContext.Current.ApplicationInstance;
HttpModuleCollection mods = ctx.Modules;
System.Web.SessionState.SessionStateModule ssm = (SessionStateModule)mods.Get("Session");
System.Reflection.FieldInfo[] fields = ssm.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
SessionStateStoreProviderBase store = null;
System.Reflection.FieldInfo rqIdField = null, rqLockIdField = null, rqStateNotFoundField = null;
SessionStateStoreData rqItem = null;
foreach (System.Reflection.FieldInfo field in fields)
{
if (field.Name.Equals("_store")) store = (SessionStateStoreProviderBase)field.GetValue(ssm);
if (field.Name.Equals("_rqId")) rqIdField = field;
if (field.Name.Equals("_rqLockId")) rqLockIdField = field;
if (field.Name.Equals("_rqSessionStateNotFound")) rqStateNotFoundField = field;
if ((field.Name.Equals("_rqItem")))
{
rqItem = (SessionStateStoreData)field.GetValue(ssm);
}
}
object lockId = rqLockIdField.GetValue(ssm);
if ((lockId != null) && (oldId != null))
{
store.RemoveItem(Context, oldId, lockId, rqItem);
}
rqStateNotFoundField.SetValue(ssm, true);
rqIdField.SetValue(ssm, newId);
}
protected void Login_Click(object sender, EventArgs e)
{
if (/*Login success*/)
{
ReGenerateSessionId(); // Change SessionID
Session["User"] = user;
Response.Redirect("Login_Success.aspx", true);
}
}
关于asp.net - 更改 session 变量中的 SessionID 数据后会丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15241464/
我正在使用服务总线服务从azure发送消息,我想知道如果我不使用它,使用SessionId是否会比Case影响发送消息的速度。我知道 SessionId 会保留顺序,但是总体速度怎么样?谢谢 最佳答案
我正在使用服务总线服务从azure发送消息,我想知道如果我不使用它,使用SessionId是否会比Case影响发送消息的速度。我知道 SessionId 会保留顺序,但是总体速度怎么样?谢谢 最佳答案
通过使用给定的示例,我遇到了相应的问题。在示例中,通过首先重新加载 session 在 WebSocket 中使用它: socket.on('set value', function (val)
我有一个使用 application.cfc 的 ColdFusion 9 应用程序,它会像它应该的那样创建 session ,但是当我转储 session 时,有一个 cfid 和一个 cftoke
我正在尝试解决问题。用户使用 CAS SSO 登录到应用程序。该用户登录到另一个用户的帐户 - 通常是几秒钟前登录的用户帐户。有没有人知道为什么会发生这种情况以及如何解决? 我们确实采用了临时解决方法
我正在尝试从我的 SOAP API 响应 (XML) 中提取 sessionId。但是,无论我尝试什么,Python 仍然给我 sessionId 是空的(当我将响应打印为文本时它不是)。 我已经尝试
我一直在尝试 QuickFix,但收到“AttributeError:SessionID”。老实说,我不知道为什么会发生这种情况,我对代码做了一些修改,但问题仍然存在。另外,谷歌在这方面让我很失望,所
当使用 servlet api(如 JSF 或 JSP 页面)运行 java web 应用程序时,会在某处生成一个“唯一”的 SessionID 来标识用户的 session 。 我想知道这些 ses
这是我的 php 代码。 我得到了 Array ( [PHPSESSID] => vgojsl5kuuau35kpigsc5mepa3 ) 当我关闭浏览器并再次点击我的 php 文件时。我明白了。
我登录到 django 管理。当我打开 firebug JS 控制台并尝试使用 document.cookie 打印 cookie 时,我只得到 csrftoken cookie。但是当我打开 Fir
我想知道是否有人知道 ASP.NET SessionID 的格式是什么? 它不是 GUID 或 base64,它的类型是什么?它是否因 .NET 框架的版本而异? 谢谢 最佳答案 已编辑。从我原来的愚
我正在编写一个将对象存储在缓存中的 asp.net 应用程序。当页面第一次加载时,它会检查对象的缓存,如果存在,它将使用该对象。如果对象不存在,它将重新构建它并将其存储在缓存中。由于多个用户可以同时使
我正在编写一个使用 OAuth 的 Python/Django Web 应用程序(对于 TwitterAPI,这并不重要)。 我在我的登录函数中存储了一个 session ID,然后在使用 OAuth
有没有办法查看是否所有的浏览器窗口都关闭了?我看到如果您在 WebDriver 上调用 driver.quit() 或 driver.close(),sessionId 将变为 null。有办法检查吗
我在 IIS7 上部署了两个 Web 应用程序。 问题是,如果我使用相同的浏览器(不同的选项卡)请求两个应用程序,IIS 将生成相同的 Session.SessionID。 这会导致 ASP.Net
有没有办法查看是否所有的浏览器窗口都关闭了?我看到如果您在 WebDriver 上调用 driver.quit() 或 driver.close(),sessionId 将变为 null。有办法检查吗
我需要以编程方式从 Google Insights 下载 CSV 文件。由于它需要身份验证,我使用 clientLogin 来获取 session id。 如何通过将 session ID 作为 co
我正在尝试在微服务之间发出请求,以检索具有相同角色的用户列表。为此,我首先在微服务 1 内的前端和后端之间发出请求。接下来,我从微服务 1 后端调用微服务 2 中的端点,但其中丢失了 session
有什么方法可以配置(xml) tomcat (6.x) 来生成唯一的SessionId。(不扩展 ManagerBase/StandardManager)。 最佳答案 I am capturing u
我尝试在 Everyauth 的 .findOrCreateUser 上获取Express sessionID。 这个问题的背景: 基本上,我尝试集成 Socket.IO 和 Express,并阅读
我是一名优秀的程序员,十分优秀!