会话ID自定义

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

在大多数情况下,TCell代理将自动检测应用程序使用的会话ID,而无需自定义。但是,有时应用程序自定义其会话ID处理,因此,标准cookie会话不合适。对于使用.NET核心代理时的这种情况,客户可以编写自定义lambda.并将其传递给UsetCellSessionID中间件函数,如下所示:

          
UsetcellsessionId使用
1
public iapplicaticalbuilder usetcellsessionId(这个iapplicaticalbuilder应用程序,func 操作);

来自Lambda的返回类型(String)将是自定义会话ID。另请注意中间件是.NET核心中间件组件,并应使用标准.NET核心配置服务启动配置方法。

例子

虽然您可以使用任何形式的上下文操作,但在TCell在会话ID结束时删除动态盐时,会发生以下使用情况。在此示例中,具有自定义Lambda的启动类的部分片段检索cookie“abc”的会话ID,并在连字符“ - ”之前从字符串的开头处。

          
示例会话处理片段
1
使用Microsoft.extensions.Configuration;
2
使用tcell.agent.aspnetcore;
3.
......
4.
5.
公共类初创公司{
6.
7.
......
8.
9.
Public Void Configure(IAPplicationBuilder应用程序,ihostingenvironment Env)
10.
{
11.
12.
if(env.isdevelopment())
13.
{
14.
app.useveloperexceptionpage();
15.
}
16.
17.
app.usestaticfiles();
18.
19.
//添加逻辑以提取会话ID
20.
app.usetcellsessiond(context => getthecustomsessionId(上下文));
21.
22.
app.usemvc(路由=>
23.
{
24.
routes.maproute(
25.
名称:“默认”,
26.
模板:“{controller = home} / {action = index} / {id?}”);
27.
});
28.
}
29.
30.
31.
Private Const String CustomSessionKey =“ABC”;
32.
私有字符串getthecustomsessiond(httpcontext ctxt)
33.
{
34.
_logger.loginformation(“从上下文获取会话”);
35.
var cookievalue = ctxt.request.cookies [customsessionkey];
36.
37.
var prefix = cookievalue.split(“ - ”)。第一();
38.
返回前缀;
39.
}
40.
41.
42.
}
43.