加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

在ASP.NET中生成新的SessionId

发布时间:2020-12-16 06:25:20 所属栏目:asp.Net 来源:网络整理
导读:登录时我想生成一个新的SessionId.我找到了 one solution that works,但它需要一些非常hackish的东西,并要求应用程序具有完全信任securityPolicy设置. 有没有其他方法来实现这一目标? 解决方法 看起来像这样: Session.Abandon();Response.Cookies.Add(new
登录时我想生成一个新的SessionId.我找到了 one solution that works,但它需要一些非常hackish的东西,并要求应用程序具有完全信任securityPolicy设置.

有没有其他方法来实现这一目标?

解决方法

看起来像这样:

Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId",""));

通过清除该cookie,将在服务器上创建具有新会话ID的新会话.

(参考:Microsoft Support)

编辑:这是一个使用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",success: function () { console.log("Success!"); },error: function (x,y,z) {
                    console.log("Failure!");
                }
            });
        },z) {
            console.log("Failure!");
        }
    });
}

在代码隐藏方面(对于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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读