Java

开始

jar文件可以在tcell-jvmagent - * gztcell-jvmagent - * . zip作为tcellagent-hooks - * . jar

登录事件

要发送登录事件,在登录时,一旦确定登录是否成功,应调用以下方法:

         
1
io.tcellagent.hooks.v1.login.LoginReporter.registerLoginEvent ()

设置

在某些情况下,tCell无法获取http请求的sessionid或userid。在这种情况下,您可以在知道这些值的最早时间点自己设置它们。这可以通过以下方法分别实现:

         
1
io.tcellagent.hooks.v1.TCellSettings.setSessionId(字符串sid)
2
3.
io.tcellagent.hooks.v1.TCellSettings.setUserId(字符串用户名)。

API文档

         
1
公共最终类io.tcellagent.hooks.v1.login.LoginReporter扩展了java.lang.Object
         
1
public static void registerLoginEvent(LoginStatus事件,
2
以会话,
3.
以userAgent,
4
以引用,
5
以remoteAddr,
6
java.lang.String[]headerKeys,
7
以用户标识,
8
以documentUri)
         
1
public static void registerLoginEvent(LoginStatus事件,
2
以会话,
3.
以userAgent,
4
以引用,
5
以remoteAddr,
6
java.lang.String[]headerKeys,
7
以用户标识,
8
以documentUri,
9
java.lang.Boolean(用户有效)
         
1
public static void registerLoginEvent(LoginStatus事件,
2
以会话,
3.
以userAgent,
4
以引用,
5
以remoteAddr,
6
java.lang.String[]headerKeys,
7
以用户标识,
8
以documentUri,
9
java.lang.Boolean userValid,
10
java.lang.String(密码)

详细参数信息如下

参数 细节
事件 事件类型。请参阅LoginStatus
会话 sessionId的字符串。看到下面的代码示例
用户代理 来自Http报头的值。例如,来自req.getHeader("User-Agent")
介绍人 来自Http报头的值。例如,来自req.getHeader("Referer")
remoteAddr 来自客户端的IP。(有时可能是X-Forwarded-For)
校长 标题键的数组。例如,来自req.getHeaderNames()
用户标识 正在使用的用户标识的字符串。
密码 登录失败/成功的密码。

LoginStatus

         
1
java . lang . object
2
java.lang.Enum
3.
io.tcellagent.hooks.v1.login.LoginStatus
4
5
public static final LoginStatus LOGIN_SUCCESS
6
public static final LoginStatus LOGIN_FAILURE
         
1
public final class io.tcellagent.hooks.v1.TCellSettings
2
3.
public static void setUserId(String userId)
4
userId-用户id的字符串值,例如'joe'。user@customer.com'.
5
6
public static void setSessionId(String sessionId)
7
sessionId - sessionId值的字符串。请注意,在发送到tCell服务之前,将对该值进行安全散列处理。

登录示例

         
1
public class LoginServlet extends HttpServlet {
2
3.
@Override
4
受保护的void doPost(HttpServletRequest-req,HttpServletResponse-resp)引发ServletException,IOException{
5
字符串userId=req.getParameter(“customUserIdField”);
6
字符串密码=req.getParameter(“customPasswordField”);
7
布尔成功=假;
8
boolean validUser = isUserValid(userId);
9
如果(validUser) {
10
成功=登录(userId,密码);
11
12
LoginStatus status = success ?LoginStatus。LOGIN_SUCCESS: LoginStatus.LOGIN_FAILURE;
13
HttpSession session = req.getSession(false);
14
String sessionId = session != null ?session.getId():空;
15
枚举< String > headerNames = req.getHeaderNames();
16
ArrayList < String > names = new ArrayList < > ();
17
而(headerNames.hasMoreElements ()) {
18
names.add (headerNames.nextElement ());
19
20.
LoginReporter.registerLoginEvent(状态,
21
sessionId,
22
req.getHeader(“用户代理”),
23
req.getHeader(“推荐人”),
24
req.getRemoteAddr(),//注意:如果使用代理,实际的客户端IP可能位于头中!
25
names.toArray(新字符串[0]),
26
用户ID,
27
req.getRequestURI (),
28
瓦利杜瑟,
29
密码);
30.
分别为setStatus(成功?200:401);
31
32
33
public boolean isUserValid(String userId) {
34
返回“用户”.equals (userId);
35
36
37
公共布尔登录(字符串用户ID、字符串密码){
38
返回“user.equals(userId)&“password.equals(password)”;
39
40
         
1
示例会话筛选器
2
3.
公共类MySessionFilter实现了过滤器{
4
5
void doFilter(ServletRequest request, ServletResponse response response, FilterChain chain) throws IOException, ServletException {
6
7
...
8
io.tcellagent.hooks.v1.TCellSettings。setUserId(<用户Id>);
9
io.tcellagent.hooks.v1.TCellSettings.setSessionId();
10
doFilter(请求、响应链);
11
12