SessionIDManager.Validate(String) 方法

定义

获取一个值,该值指示会话标识符是否有效。

public:
 virtual bool Validate(System::String ^ id);
public virtual bool Validate(string id);
abstract member Validate : string -> bool
override this.Validate : string -> bool
Public Overridable Function Validate (id As String) As Boolean

参数

id
String

要验证的会话标识符。

返回

true 如果会话标识符有效,则为否则,为 false.

实现

示例

下面的代码示例演示了一个类,该类继承该SessionIDManager类,并使用提供和验证CreateSessionID作为Validate方法的方法替代GuidSessionID方法。

using System;
using System.Configuration;
using System.Web.Configuration;
using System.Web;
using System.Web.SessionState;

namespace Samples.AspNet.Session
{

  public class GuidSessionIDManager : SessionIDManager
  {

    public override string CreateSessionID(HttpContext context)
    {
      return Guid.NewGuid().ToString();
    }

    public override bool Validate(string id)
    {
      try
      {
        Guid testGuid = new Guid(id);

        if (id == testGuid.ToString())
          return true;
      }
      catch
      {
      }

      return false;
    }
  }
}
Imports System.Configuration
Imports System.Web.Configuration
Imports System.Web
Imports System.Web.SessionState


Namespace Samples.AspNet.Session

  Public Class GuidSessionIDManager
    Inherits SessionIDManager

    Public Overrides Function CreateSessionID(context As HttpContext) As String
      Return Guid.NewGuid().ToString()
    End Function

    Public Overrides Function Validate(id As String) As Boolean
      Try
        Dim testGuid As Guid = New Guid(id)

        If id = testGuid.ToString() Then _
          Return True
      Catch
      
      End Try

      Return False
    End Function

  End Class

End Namespace

若要使用此示例中演示的自定义类,请将 Web.config 文件中的 HTTP 模块替换为 SessionID 自定义类,如以下示例所示。

<httpModules>
  <remove name="SessionID" />
  <add name="SessionID"
       type="Samples.AspNet.Session.GuidSessionIDManager" />
</httpModules>

注解

此方法不应从应用程序代码调用。

该方法 Validate 验证提供的 id 字符串是一个 24 个字符的字符串,其中包含从 a 到 z 的小写字符,数字从 0 到 5,会话 ID 的最大长度不超过 80 个字符。

此方法 GetSessionID 从 HTTP 请求检索会话标识符时调用 Validate 该方法,以确保提供会话标识符的格式正确。

继承者说明

可以通过创建一个继承 SessionIDManager 类并使用自己的自定义实现替代 CreateSessionID(HttpContext)Validate(String) 方法来提供 ASP.NET 会话状态使用的自定义会话标识符。 即使创建自定义会话标识符,该类的会话 ID 也限制为 80 个字符 SessionIDManager

适用于

另请参阅