Azkaban 源码分析之用户登录篇

介绍

用户登录过程 :

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

protected void handleAjaxLoginAction(HttpServletRequest req,
      HttpServletResponse resp, Map<String, Object> 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中.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 10,742评论 0 13
  • 每天进步一点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点~~从开始只能写几句话、模仿别人的观点,到现...
    一个帅气的名字呀阅读 19,492评论 4 31
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,923评论 11 349
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,468评论 25 708
  • 今天貌似有好几个人生日,但是没有一个是给我的。有点心酸。
    辣炒蛤蜊阅读 268评论 0 0

友情链接更多精彩内容