登录时我想生成一个新的SessionId.我找到了一个有效的解决方案,但它需要一些非常hackish的东西,并要求应用程序具有Full Trust securityPolicy设置.
有没有其他方法来实现这一目标?
看起来像这样:
Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
Run Code Online (Sandbox Code Playgroud)
通过清除该cookie,将在服务器上创建具有新会话ID的新会话.
(参考:Microsoft支持)
编辑:这是一个使用AJAX(使用jQuery)调用服务器代码而不刷新页面的示例 - 它调用两次,一次删除第一个会话,一次生成一个新会话.可能有更好的方法,但这确实有效.
function newSession() {
jQuery.ajax({
type: "POST",
url: "WebForm1.aspx/ClearSession",
data: "{}",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function () {
jQuery.ajax({
type: "POST",
url: "WebForm1.aspx/NewSession",
data: "{}",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function () { console.log("Success!"); },
error: function (x, y, z) {
console.log("Failure!");
}
});
},
error: function (x, y, z) {
console.log("Failure!");
}
});
}
Run Code Online (Sandbox Code Playgroud)
在代码隐藏方面(对于WebForms - 您也可以使用MVC控制器执行此操作):
[WebMethod]
public static void ClearSession()
{
HttpContext.Current.Session.Abandon();
HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
}
[WebMethod]
public static void NewSession()
{
HttpContext.Current.Session["x"] = 123;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16167 次 |
| 最近记录: |