ASP.NET 用于生成会话 ID 的函数?

Posted

技术标签:

【中文标题】ASP.NET 用于生成会话 ID 的函数?【英文标题】:Function ASP.NET uses to generate Session ID? 【发布时间】:2010-11-16 17:14:01 【问题描述】:

ASP.NET 是否公开了它用来生成会话 ID 的底层函数?我想生成一个用于 Web 服务的会话令牌,但它不会放在 Set-Cookie 标头中。如果 ASP.NET 已经有一个我可以用来生成会话 ID 的函数,这将使我不必自己动手。

【问题讨论】:

【参考方案1】:

Reflector是你的朋友:

SessionIDManager.CreateSessionID()

internal static string Create(ref RandomNumberGenerator randgen)

    if (randgen == null)
    
        randgen = new RNGCryptoServiceProvider();
    
    byte[] data = new byte[15];
    randgen.GetBytes(data);
    return Encode(data);

【讨论】:

这类似于我将自己滚动它的方式......很高兴知道我离我不远了。【参考方案2】:

你不能System.Guid.NewGuid().ToString()吗?

【讨论】:

据我了解,GUID 有利于唯一性,但它们作为安全令牌不好,因为它们的随机性不足以防止猜测。 我想看看有人猜一个向导!!【参考方案3】:

我不确定 ASP.Net 在后台使用了什么,但您应该能够使用 System.Guid.NewGuid().ToString() 来得出一个独特的值。

【讨论】:

以上是关于ASP.NET 用于生成会话 ID 的函数?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 中的会话固定

是否可以将会话 ID 设置为我在 asp.net 中选择的值

如何终止会话或会话 ID (ASP.NET/C#)

登录asp.net后如何更改会话ID

如何在 ASP.NET 中跨多个 Web 应用程序维护相同的会话 ID

ajax 请求是不是会导致更新 asp.net 会话?