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
Public final class io.tcellagent.hooks.v1.login。LoginReporter扩展了java . lang . object
         
1
public static void registerLoginEvent(LoginStatus事件,
2
以会话,
3.
以userAgent,
4
以引用,
5
以remoteAddr,
6
. lang。String [] headerKeys,
7
以用户标识,
8
以documentUri)
         
1
public static void registerLoginEvent(LoginStatus事件,
2
以会话,
3.
以userAgent,
4
以引用,
5
以remoteAddr,
6
. lang。String [] headerKeys,
7
以用户标识,
8
以documentUri,
9
java.lang.Boolean userValid)
         
1
public static void registerLoginEvent(LoginStatus事件,
2
以会话,
3.
以userAgent,
4
以引用,
5
以remoteAddr,
6
. lang。String [] headerKeys,
7
以用户标识,
8
以documentUri,
9
java.lang.Boolean userValid,
10
以密码)

详细参数信息如下

参数 细节
事件 类型的事件。看到LoginStatus
会话 sessionId的字符串。看到下面的代码示例
userAgent 来自Http报头的值。例如,来自req.getHeader("User-Agent")
介绍人 来自Http报头的值。例如,来自req.getHeader("Referer")
remoteAddr 来自客户端的IP。(有时会被x - forward - for)
headerKeys 标题键的数组。例如,来自req.getHeaderNames()
用户标识 正在使用的用户id的字符串。
密码 登录失败/成功的密码。

LoginStatus

         
1
java . lang . object
2
java.lang.Enum < LoginStatus >
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) throws ServletException, IOException {
5
String userId = req.getParameter("customUserIdField");
6
String password = req.getParameter("customPasswordField");
7
Boolean success = false;
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
的名字。toArray(新的字符串[0]),
26
用户标识,
27
req.getRequestURI (),
28
validUser,
29
密码);
30.
分别地。setStatus(成功?200: 401);
31
32
33
public boolean isUserValid(String userId) {
34
返回“用户”.equals (userId);
35
36
37
public boolean login(String userId, String password){/ /密码
38
return "user".equals(userId) && "password".equals(password);
39
40
         
1
例子会话过滤器
2
3.
public class MySessionFilter implements Filter {
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