Skip to content

Commit

Permalink
添加登录流程图及其脚本
Browse files Browse the repository at this point in the history
  • Loading branch information
Fireply committed May 29, 2016
1 parent d8b2642 commit bd198a0
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 0 deletions.
86 changes: 86 additions & 0 deletions diagram/login.gv
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
digraph login {
graph [fontname="Microsoft YaHei"];
node [fontname="Microsoft YaHei", shape=box];
edge [fontname="Microsoft YaHei"];

label = "登录流程图";

start [label="开始", style=rounded];
e0 [label="结束", style=rounded];
e1 [label="结束", style=rounded];
ifUsePassword [label="是否通过密码登录?", shape="diamond"];
queryDbPassword [label="查询数据库"];
ifAllowLogin [label="是否允许当前 IP\n登录这个 user 账号", shape=diamond];
isPasswordCorrect [label="密码是否正确?", shape=diamond];
ifDbHasRecord [label="数据库是否有\nuserId,sequence,\ntoken, IP 记录", shape=diamond];
createSequenceToken [label="生成 sequence 和 token"];
saveDb [label="存入数据库"];
saveCookie [label="将 userId, sequence,\ntoken 存入 Cookie"]
updateSession [label="更新 session"];
increasePasswordSuccess [label="更新数据库,对应 IP 记录的\npassword_success + 1"];
toProfile [label="跳转到用户主页"];
increasePasswordFailure [label="更新数据库,\n对应 IP 记录的\npassword_failure + 1"];
toLogin [label="跳转到登录页"];

start -> ifUsePassword;
ifUsePassword -> queryDbPassword [label=""];
queryDbPassword -> ifAllowLogin;
ifAllowLogin -> isPasswordCorrect [label=""];
isPasswordCorrect -> ifDbHasRecord [label=""];
ifDbHasRecord -> createSequenceToken [label=""];
createSequenceToken -> saveDb -> saveCookie;
ifDbHasRecord -> saveCookie [label=""];
saveCookie -> updateSession;
updateSession -> increasePasswordSuccess -> toProfile;
toProfile -> e0;
isPasswordCorrect -> increasePasswordFailure [label=""];
increasePasswordFailure -> toLogin;
toLogin -> e1;
ifAllowLogin -> toLogin [label=""];

ifUseCookie [label="是否通过 Cookie 登录?", shape=diamond];
queryDbSignatrue [label="从数据库查询 sequence, token, IP"];
ifDbHasCookieRecord [label="数据库是否中有\nsequence, token, IP 记录", shape=diamond];
ifSequenceCorrect [label="sequence 是否正确?", shape=diamond];
increaseSequenceFailure [label="更新数据库,对应 IP 记录的\nsequence_failure + 1"];

ifUsePassword -> ifUseCookie [label=""];
ifUseCookie -> queryDbSignatrue [label=""];
queryDbSignatrue -> ifDbHasCookieRecord;
ifDbHasCookieRecord -> ifSequenceCorrect [label=""];
ifSequenceCorrect -> increaseSequenceFailure [label=""];
increaseSequenceFailure -> toLogin;

ifIpSame [label="IP 是否相同", shape=diamond];
ifTokenSame [label="Cookie 中的 token\n是否与数据库的一致?", shape=diamond];
increaseCookieSuccess [label="更新数据库,对应 IP 记录的\ncookie_success + 1"];
updateCookieToken [label="更新 Cookie 中的 token"];

ifSequenceCorrect -> ifIpSame [label=""];
ifIpSame -> ifTokenSame [label=""];
ifTokenSame -> increaseCookieSuccess [label=""];
increaseCookieSuccess -> toProfile;
ifTokenSame -> updateCookieToken [label=""];
updateCookieToken -> toProfile;

ifTokenSameIpDiff [label="Cookie 中的 token\n是否与数据库的一致?", shape=diamond];
increaseMultiDeviceFactor [label="更新数据库,对应 IP 记录的\nmulti_device_factor + 1"];
increaseIpFactor [label="更新数据库,对应 IP\n记录的 ip_factor + 1"];
updateDbIp [label="更新数据库中的 IP"];
noticeUser [label="发送邮件提醒用户\n更改账号密码"];

ifIpSame -> ifTokenSameIpDiff [label=""];
ifTokenSameIpDiff -> increaseMultiDeviceFactor [label=""];
ifTokenSameIpDiff -> increaseIpFactor [label=""];
increaseMultiDeviceFactor -> updateDbIp;
increaseIpFactor -> updateDbIp;
updateDbIp -> noticeUser -> updateCookieToken

deleteSession [label="从 session 中\n移除userId,\nsequence, token"];
deleteCookie [label="从Cookie 中\n移除userId,\nsequence, token"];
ifDbHasCookieRecord -> deleteSession [label=""];
deleteSession -> deleteCookie -> toLogin;

toIndex [label="跳转到网站首页"];
ifUseCookie -> toIndex [label=""];
}
Binary file added diagram/login.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit bd198a0

Please sign in to comment.