介绍
用户登录过程 :
当用户首次进入 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中.