Java
开始
jar文件可以在tcell-jvmagent - * gz
或tcell-jvmagent - * . zip
作为tcellagent-hooks - * . jar
登录事件
为了发送登录事件,在登录的时候,一旦你确定了登录是否成功,你应该调用这个方法:
1io.tcellagent.hooks.v1.login.LoginReporter.registerLoginEvent ()
设置
在某些情况下,tCell无法获取http请求的sessionid或userid。在这种情况下,您可以在知道这些值的最早时间点自己设置它们。这可以通过以下方法分别实现:
1io.tcellagent.hooks.v1.TCellSettings。setSessionId字符串(sid)23.io.tcellagent.hooks.v1.TCellSettings。setUserId(字符串的用户名)。
API文档
1Public final class io.tcellagent.hooks.v1.login。LoginReporter扩展了java . lang . object
1public static void registerLoginEvent(LoginStatus事件,2以会话,3.以userAgent,4以引用,5以remoteAddr,6. lang。String [] headerKeys,7以用户标识,8以documentUri)
1public static void registerLoginEvent(LoginStatus事件,2以会话,3.以userAgent,4以引用,5以remoteAddr,6. lang。String [] headerKeys,7以用户标识,8以documentUri,9java.lang.Boolean userValid)
1public static void registerLoginEvent(LoginStatus事件,2以会话,3.以userAgent,4以引用,5以remoteAddr,6. lang。String [] headerKeys,7以用户标识,8以documentUri,9java.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
1java . lang . object2java.lang.Enum < LoginStatus >3.io.tcellagent.hooks.v1.login.LoginStatus45public static final LoginStatus LOGIN_SUCCESS6public static final LoginStatus LOGIN_FAILURE
1public final class io.tcellagent.hooks.v1.TCellSettings23.public static void setUserId(String userId)4userId -用户id的字符串值,例如“joe.user@customer.com”。56public static void setSessionId(String sessionId)7sessionId - sessionId值的字符串。请注意,在发送到tCell服务之前,将对该值进行安全散列处理。
示例登录
1public class LoginServlet extends HttpServlet {23.@Override4void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {5String userId = req.getParameter("customUserIdField");6String password = req.getParameter("customPasswordField");7Boolean success = false;8boolean validUser = isUserValid(userId);9如果(validUser) {10成功=登录(userId,密码);11}12LoginStatus status = success ?LoginStatus。LOGIN_SUCCESS: LoginStatus.LOGIN_FAILURE;13HttpSession session = req.getSession(false);14String sessionId = session != null ?session.getId():空;15枚举< String > headerNames = req.getHeaderNames();16ArrayList < String > names = new ArrayList < > ();17而(headerNames.hasMoreElements ()) {18names.add (headerNames.nextElement ());19}20.LoginReporter.registerLoginEvent(状态,21sessionId,22req.getHeader(“用户代理”),23req.getHeader(“推荐人”),24req.getRemoteAddr(), //注意:如果使用代理,真实的客户端IP可能在头部!25的名字。toArray(新的字符串[0]),26用户标识,27req.getRequestURI (),28validUser,29密码);30.分别地。setStatus(成功?200: 401);31}3233public boolean isUserValid(String userId) {34返回“用户”.equals (userId);35}3637public boolean login(String userId, String password){/ /密码38return "user".equals(userId) && "password".equals(password);39}40}
1例子会话过滤器23.public class MySessionFilter implements Filter {45void doFilter(ServletRequest request, ServletResponse response response, FilterChain chain) throws IOException, ServletException {67...8io.tcellagent.hooks.v1.TCellSettings。setUserId(<用户Id>);9io.tcellagent.hooks.v1.TCellSettings。setSessionId(); 10doFilter(请求、响应链);11}12}
这个页面对你有帮助吗?