繁体   English   中英

令牌生成在IE(获得200)中有效,但在Chrome和FF(获得401)中不起作用

[英]Token generation working in IE (getting 200) but not Chrome and FF (getting 401)

如果满足某些条件,我有一些应该生成新令牌的代码。

在IE中,令牌生成器返回200 (控制台记录令牌),但在Chrome和Firefox中,我收到401错误(控制台登录令牌显示null )。

我一直在寻找原因,但出于某种原因,我遇到的大多数SO帖子都存在IE和令牌问题,而不是Chrome。

permissionToCallAPI = new Promise(function(resolve, reject) {
      function sessionGet(key) {
        let stringValue = window.sessionStorage.getItem(key);

        if (stringValue !== null) {
            try {
                const { value, expirationDateStr } = JSON.parse(stringValue);

                if (value && expirationDateStr) {

                    let expirationDate = new Date(value.expirationDateStr);

                    if (expirationDate > new Date()) {
                        return value;
                    }

                    isAuthorized(value)
                    .then(resp => {
                        console.log("Valid Token");
                        return value;
                    })
                    .catch(err => {
                        throw "Failed Authentication.";
                    });
                }
            } catch (e) {
                console.log(e);
                window.sessionStorage.removeItem(key);
                return null;
            }
        }
        return null;
      } // sessionGet()

      // add into session
      function sessionSet(key, value, expirationInMin) {
        if (!expirationInMin) {
          expirationInMin = 59;
        }

        var expirationDate = new Date(
          new Date().getTime() + 60000 * expirationInMin
        );

        var newValue = {
          value: value,
          expirationDate: expirationDate.toISOString()
        };
        window.sessionStorage.setItem(key, JSON.stringify(newValue));
      }

      let _token = sessionGet("tokenSet");
      console.log(_token); // null in Chr (not IE)
      if (_token == null) {
        $.ajax({
          url: _RestHost + "/User/GenerateToken",
          method: "GET", // using POST gets an error
          cache: false,
          withCredentials: true,
          headers: { 
            "Content-Type": "application/json",
            "X-Requested-With": "XMLHttpRequest",
            "Authorization": _token
          },
          success: function(data) {
            sessionSet("tokenSet", data.AuthToken);
            resolve(data.AuthToken);
          },
          error: function(err) {
            reject(err);
          }
        });
      } else {
        resolve(_token);
      }
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM