会话ID自定义

tCell支持帐号接管,这是一个主要和常用的情况。根据策略,TCell使用会话ID作为检测帐户收购的参数之一。

在大多数情况下,tCell代理将自动检测应用程序使用的会话ID,而无需定制。但是,有时应用程序会自定义其会话ID处理,因此,标准cookie会话不合适。对于使用.NET Core agent时出现的这种情况,客户可以编写自定义兰姆达并将其传递给UseTcellSessionId中间件函数,定义如下:

          
UseTcellSessionId用法
1.
公共IAApplicationBuilder UseTcellSessionId(此IAApplicationBuilder应用程序,Funcaction);

lambda的返回类型(字符串)将是自定义会话ID。还要注意中间件是.NET核心中间件组件,并应使用标准的.NET内核进行配置服务启动配置方法

实例

虽然您可以使用任何形式的上下文操纵,但当tCell删除会话ID末尾的动态salt时,会出现以下用例。在本例中,带有自定义lambda的启动类的部分片段从cookie“abc”检索会话ID,并去掉连字符“-”之前字符串的开头。

          
示例会话处理代码段
1.
使用Microsoft.Extensions.Configuration;
2.
使用Tcell.Agent.AspNetCore;
3.
...
4.
5.
公共类初创公司{
6.
7.
...
8.
9
公共无效配置(IApplicationBuilder应用程序,IHostingEnvironment环境)
10
{
11
12
if(env.IsDevelopment())
13
{
14
app.UseDeveloperExceptionPage();
15
}
16
17
app.UseStaticFiles();
18
19
//添加逻辑以提取会话ID
20
app.UseTcellSessionId(context=>GetTheCustomSessionId(context));
21
22
app.UseMvc(路由=>
23
{
24
routes.MapRoute(
25
名称:“默认”,
26
模板:“{controller=Home}/{action=Index}/{id?}”);
27
});
28
}
29
30
31
私有常量字符串CustomSessionKey=“abc”;
32
私有字符串GetTheCustomSessionId(HttpContext-ctxt)
33
{
34
_logger.LogInformation(“从上下文获取会话”);
35
var cookieValue=ctxt.Request.Cookies[CustomSessionKey];
36
37
var prefix=cookieValue.Split(“-”).First();
38
返回前缀;
39
}
40
41
42
}
43