1.网络请求先获取到用户安全token,2 在判断用户是否在登陆状态--是 直接登陆  否进入第三步,3判断用户是否选择自动登录  是  调用自动登录接口  否进入第四步 4判断用户名 密码 验证码是否都已经填写,5判断用户登录安全token是否有效——是进入第6步 否 再次获取,重新登录6.调用登录接口

解决方案 »

  1.   

    逻辑理清了直接照着写就行了
    function onLogin(){
      获取到用户安全token
    if(用户是否在登陆)
      return 登陆
    else if(选择自动登录)
      return 登陆
    else if(都已经填写)
      if(token是否有效)
        return 登陆
      else onLogin()
    }
        
      

  2.   

    前端代码:
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript" src="js/jquery.min.js"></script>
    </head>
    <body>
    <form id="formId" action="">
        <h3>用户名:</h3>
        <input name="username" />
        <h3>密码:</h3>
        <input type="password" name="password" />
        <h3>验证码:</h3>
        <input name="indentifycode" /><img src="" name="indentifycodeimg" />
        <p>是否自动登录:
            <input type="checkbox" name="autologin" /></p>
        <p><input type="submit" value="登录" /></p>
    </form>
    <script type="text/javascript">
    $(function () {
        function login(data) {
            // 调用登录接口
            $.post(urlLogin, data, function (loginData) {
                // 得到登录信息
                // ...
                // 如果报token失效,则重新获取token
                if (loginData.error) {
                    // 重新获取用户安全token
                    $.get(urlToken, function (tokenData) {
                        data.token = tokenData.data;
                        login(data);
                    });
                }
            });
        }
        $("#formId").submit(function (e) {
            e.preventDefault();
            var username = this.username.value;
            var password = this.password.value;
            var indentifyCode = this.indentifycode.value;
            var autologin = this.autologin.checked;
            var urlToken = ''; // 后台获取token接口地址
            var urlIsLogin = ''; // 后台判断是否登录接口地址
            var urlLogin = ''; // 后台登录接口地址
            var urlAutoLogin = ''; // 后台自动登录接口地址
            // 获取用户安全token
            $.get(urlToken, function (tokenData) {
                if(tokenData.data) {
                    // 判断用户是否在登陆状态,如果是,则后台直接返回登录信息
                    $.post(urlIsLogin, {
                        token: tokenData.data
                    }, function (loginData) {
                        if (loginData.data) {
                            // 得到登录信息
                            // ...
                        } else {
                            // 否则不在登录状态
                            // 判断是否选择自动登录
                            if (autologin) {
                                // 调用自动登录接口
                                $.post(urlAutoLogin, {
                                    token: tokenData.data
                                }, function (autoLoginData) {
                                    // 得到登录信息
                                    // ...
                                });
                            } else {
                                // 判断用户名 密码 验证码是否都已经填写
                                if (username != '' && password != '' && indentifyCode != '') {
                                    // 判断用户登录安全token是否有效 (此处直接调用登录接口,由后台判断token是否有效)
                                    login({
                                        username: username,
                                        password: password,
                                        indentifyCode: indentifyCode,
                                        token: tokenData.data
                                    })
                                } else {
                                    // 提示填写
                                    alert('请填写用户名 密码 验证码');
                                }
                            }
                        }
                    });
                }
            });
        });
    });
    </script>
    </body>
    </html>