SessionIDManager.Validate(String) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取一个值,该值指示会话标识符是否有效。
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方法的方法替代Guid和SessionID方法。
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 。