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 类,并使用提供 和 Validate 验证 Guid 作为 SessionID的方法替代 CreateSessionID 和 方法。
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 文件中的 SessionID
HTTP 模块替换为自定义类,如以下示例所示。
<httpModules>
<remove name="SessionID" />
<add name="SessionID"
type="Samples.AspNet.Session.GuidSessionIDManager" />
</httpModules>
注解
此方法不应从应用程序代码调用。
方法 Validate 验证提供的 id
是一个由 24 个字符组成的字符串,其中包含从 到 z 的小写字符和从 0 到 5 的数字,并且会话 ID 的最大长度不超过 80 个字符。
从 GetSessionID HTTP 请求检索会话标识符时, 方法调用 Validate 方法,以确保所提供的会话标识符格式正确。
继承者说明
可以通过创建继承 SessionIDManager 类的类并使用自己的自定义实现替代 CreateSessionID(HttpContext) 和 Validate(String) 方法,提供供 ASP.NET 会话状态使用的自定义会话标识符。 即使创建自定义会话标识符,该类的会话 ID 也限制为 80 个字符 SessionIDManager 。