不使用AUTH_ERROR

时间:2017-10-16 22:22:11

标签: admin-on-rest

我正在尝试在简单提取之上实现自定义rest客户端构建。 如果收到401-403响应,则必须将应用程序“重定向”到登录页面。

根据文档,如果收到401-403错误,它会用AUTH_ERROR神奇地调用authClient,但它没有。

有人可以解释一下,如何连接它?

我正在尝试从组件中调用rest client:它是'simpleRestClient'的简单重新实现

   componentDidMount() {
        restClient(CREATE, 'api/method', {
    CurrentTime: new Date()
          })          
          .then(o => 
         {
    this.setState({ Msg: Object.values(o.data.ServerTime) });
          });

  }

restclient实现:

export const fetchJson = (url, options = {}) => {

const requestHeaders =
    options.headers ||
    new Headers({
        Accept: 'application/json',
    });

if (
    !requestHeaders.has('Content-Type') &&
    !(options && options.body && options.body instanceof FormData)
) {
    requestHeaders.set('Content-Type', 'application/json');
}
if (options.user && options.user.authenticated && options.user.token) {
    requestHeaders.set('Authorization', options.user.token);
}

return fetch(url, { ...options, headers: requestHeaders })
    .then(response =>
        response.text().then(text => ({
            status: response.status,
            statusText: response.statusText,
            headers: response.headers,
            body: text,
        }))
    )
    .then(({ status, statusText, headers, body }) => {


        if (status < 200 || status >= 300) {
            return Promise.reject(
                new HttpError(
                    (json && json.message) || statusText,
                    status,
                    json
                )
            );
        }
        let json;
        try {
            json = JSON.parse(body);
        } catch (e) {
            // not json, no big deal
        }
        return { status, headers, body, json };
   });
};


const httpClient = (url, options = {}) => {
  if (!options.headers) {
      options.headers = new Headers({ Accept: 'application/json' });
  }
  return fetchJson(url, options);
}

1 个答案:

答案 0 :(得分:0)

您是否尝试使用HttpError而不是anyOf拒绝承诺?