Я пытаюсь интегрировать Auth0 в мой SPA. Я встраиваю функцию блокировки, поэтому она сама выполняет аутентификацию.
Я могу войти в систему, и функция блокировки работает нормально, однако я пытаюсь сохранить accessToken
и idToken
, возвращенные Замок повару ie. Для этого я использую react-cookie
.
Это мой код:
import React, { useEffect } from "react";
import Auth0Lock from "auth0-lock";
import AUTH_CONFIG from "../../config/auth0";
import moment from "moment";
import { useCookies } from "react-cookie";
import history from "../../utils/history";
export default function Lock() {
const [cookies, setCookie] = useCookies(["token"]);
const lock = new Auth0Lock(AUTH_CONFIG.clientId, AUTH_CONFIG.domain, {
auth: {
responseType: "token id_token",
sso: false
},
container: AUTH_CONFIG.container,
theme: {
primaryColor: "#3a99d8"
}
});
useEffect(() => {
if (cookies.token && cookies.token.expires < moment()._d) {
history.push("/");
}
lock.show();
}, [cookies]);
lock.on("authenticated", authResult => {
let expiresAt = moment(
authResult.expiresIn * 1000 + new Date().getTime()
);
setCookie(
"token",
{
access_token: authResult.accessToken,
id_token: authResult.idToken
},
{ path: "/", expires: expiresAt._d, secure: true }
);
});
return (
<div>
<div id={AUTH_CONFIG.container} style={{ marginTop: "32px" }} />
</div>
);
}
Итак, после аутентификации вызывается прослушиватель событий lock.on
. Я вижу, что он работает нормально, однако крючок setCookie
не спасает повара ie. Я уже console.log(authResult)
и могу подтвердить, что он возвращает соответствующие значения, но setCookie
ничего не сохраняет. Исследуя хранилище моего браузера, я вижу, что ни один повар ie не сохранен.
Кто-нибудь знает, почему он не сохраняет token
повар ie?
Спасибо заранее
Редактировать: Я нашел проблему. Я устанавливал secure: true
, однако пытался получить к нему доступ через http://localhost
, что небезопасно.