Я воссоздаю проблему, так как не уверен, что это ошибка, а предыдущая проблема, созданная для этого, просто исчезла = /
Описание
Во время обновления с react-admin
v2 до v3.3.0, я столкнулся с проблемой перенаправления на /login
после переписывания authProvider
My authProvider.js
содержит следующие методы:
export default function createAuthProvider(urls, client, options) {
return {
login: (params) => {
return fetchLoginBatch(params, urls, client, options);
},
logout: (params) => params.jwt ? fetchLogout(makeRequestLogout(urls.logout, params.jwt), options) : Promise.resolve(),
checkError: (error) => {
const { status } = error;
if (status === 401 || status === 403) {
return Promise.reject();
}
return Promise.resolve();
},
checkAuth: (params) => params.jwt ? Promise.resolve() : Promise.reject(),
getPermissions: (params) => params.jwt ? Promise.resolve(params.jwt.authorities) : Promise.resolve(),
refreshJwt: (params) => params.jwt ? fetchRefreshJwt(makeRefreshJwtRequest(client.accessTokenUri, {
grant_type: 'refresh_token',
refresh_token: params.jwt.refresh_token,
}, client), options) : Promise.resolve()
};
}
Как описано в документации и пример
Ожидается
Я ожидаю перенаправления на /login
.
Результат
Вместо этого я остаюсь на странице checkAuth
хорошо называется, а jwt
- null
,
Возможное исправление
Предлагается изменить перенаправление используя аргумент для отклоненного обещания:
checkAuth: () => localStorage.getItem('token')
? Promise.resolve()
: Promise.reject({ redirectTo: '/no-access' }),
Но добавление Promise.reject({ redirectTo: '/login' })
не помогает, даже если код выполняется.
Я попытался добавить некоторые записи в систему ra-core/lib/sideEffect/auth.js
:
console.log('auth');
exports.handleCheck = function (authProvider) {
console.log('handleCheck', authProvider);
return function (action) {
console.log('action', action);
var payload, meta, error_1, redirectTo, errorMessage;
console.log('redirectTo', redirectTo, 'meta', meta);
handleCheck
вызывается, но никогда action
, кажется, что сага как-то игнорируется.
Вопрос
Как следует клиенту боковая ручка permissions
и checkAuth
параметры отклонения?
Что я должен проверить дальше, чтобы увидеть, почему перенаправление не удается?
Как следует код ra-core
?