Я использую Firebase Auth для управления аутентификацией и использую токен JWT для связи с моим внутренним приложением Laravel.
//eg: example.com/home.html
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
user.getIdToken(/* forceRefresh */ false).then(function(idToken) {
storeToken(idToken);
ajaxCallTest1();
}).catch(function(error) {
// Handle error
});
}
})
//Laravel
//eg: api.example.com/*
function test1(){
$firebaseUser = $this->decodeToken($jwtToken_fromFrontend);
$user = User::where('uid', '=', $firebaseUser->uid)->first();
//retrieve $user object from Laravel
//and using the object to process other logic eg: edit profile, grab products & more...
}
на основе приведенного выше примера / потока:
- Каждый запрос, который я делаю, должен передавать токен JWT бэкенду
- Токен проверки бэкенда
- Если токен действителен, захватить пользователя, где uid = firebase-> uid
- используя сопоставленный объект и действуя по другой логике
Не слишком ли дорого проверять JWT и получать пользовательские данные при каждом вызове? Могу ли я знать, что это лучший способ работать с этим, мне интересно, можем ли мы установить $ _SESSION, чтобы пропустить процесс №3? как показано ниже:
//Laravel
//eg: api.example.com/*
function test1(){
if(!isSet($_SESSION['userData']))
{
$firebaseUser = $this->decodeToken($jwtToken_fromFrontend);
$user = User::where('uid', '=', $firebaseUser->uid)->first();
$_SESSION['userData'] = $user;
}
// using $_SESSION['userData'] to process other items
// so that we can skip 'validate & retrieve $user' steps on our next call
}
При использовании вышеуказанного метода, если мы извлекаем данные непосредственно из $ _SESSION, нам не нужно выполнять запросы при каждом вызове API, могу я узнать, является ли это правильным способом управления? или есть какой-нибудь способ для дальнейшей оптимизации и сделать это с Firebase Auth & Laravel?
спасибо!