会话ID定制

tCell支持账户的收购,这是一个主要和常见的用例。根据策略,tCell使用会话id作为检测帐户接管的参数之一。

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

          
UseTcellSessionId用法
1
public IApplicationBuilder UseTcellSessionId(这个IApplicationBuilder应用,Func action);

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

例子

虽然您可以使用任何形式的上下文操作,但当tCell在会话ID末尾删除一个动态salt时,会出现以下用例。在这个例子中,一个Startup类的部分代码片段用一个自定义lambda从cookie "abc"中检索会话ID,并去掉连字符"-"之前的字符串开头。

          
会话处理片段
1
使用Microsoft.Extensions.Configuration;
2
使用Tcell.Agent.AspNetCore;
3.
...
4
5
公共类启动{
6
7
...
8
9
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
10
11
12
如果(env.IsDevelopment ())
13
14
app.UseDeveloperExceptionPage ();
15
16
17
app.UseStaticFiles ();
18
19
//添加逻辑提取会话ID
20.
app.UseTcellSessionId(上下文= > GetTheCustomSessionId(上下文));
21
22
app.UseMvc(路线= >
23
24
路线。MapRoute (
25
名称:“默认”,
26
模板:“{控制器=回家}/ {action =指数}/ {id ?}”);
27
});
28
29
30.
31
private const string CustomSessionKey = "abc";
32
getcustomsessionid (HttpContext ctxt)
33
34
_logger。LogInformation(“从上下文获取会话”);
35
var cookivalue = ctxt.Request.Cookies[CustomSessionKey];
36
37
var prefix = cookievaluate . split ("-").First();
38
返回前缀;
39
40
41
42
43