Azkaban 源码分析之用户登录篇

介绍

用户登录过程 :

当用户首次进入 Azkaban 的时候, 需要首先登录系统, 登录通过 LoginAbstractAzkabanServlet 类来接入实现功能.LoginAbstractAzkabanServlet 中有一个 handleAjaxLoginAction 用来处理用户登录事件.

protected void handleAjaxLoginAction(HttpServletRequest req,
      HttpServletResponse resp, Map ret)
      throws ServletException {
    if (hasParam(req, "username") && hasParam(req, "password")) {
      Session session = null;
      try {
        session = createSession(req);  // 在createSession()方法中, 系统完成用户的认证,并创建 session.
      } catch (UserManagerException e) {
        ret.put("error", "Incorrect Login. " + e.getMessage());
        return;
      }

      Cookie cookie = new Cookie(SESSION_ID_NAME, session.getSessionId());
      cookie.setPath("/");
      resp.addCookie(cookie);
      getApplication().getSessionCache().addSession(session);
      ret.put("status", "success");
      ret.put("session.id", session.getSessionId());
    } else {
      ret.put("error", "Incorrect Login.");
    }
  }

createSession 中的验证方式 :

private Session createSession(String username, String password, String ip)
     throws UserManagerException, ServletException {
   UserManager manager = getApplication().getUserManager();
   User user = manager.getUser(username, password);

   String randomUID = UUID.randomUUID().toString();
   Session session = new Session(randomUID, user, ip);

   return session;
 }

如果用户核对成功, 将给用户分配session 完成用户登录,从上面我们也可以看出, 用户信息维护在session中.

你可能感兴趣的:(Azkaban 源码分析之用户登录篇)