Согласно руководству Parse js:
Parse.User
, полученный из Parse.User.current()
, всегда будет аутентифицирован. Если вам нужно проверить, аутентифицирован ли Parse.User
, вы можете вызвать метод authenticated
. Вам не нужно проверять аутентифицированные с помощью Parse.User
объекты, полученные с помощью аутентифицированного метода.
Так что, когда пользователь регистрируется в моем веб-приложении, вы получаете подтверждающее электронное письмо, которое после нажатия направитпользователь вернулся в приложение. Затем я вызываю Parse.User.current()
, который возвращает объект пользователя, но sessionToken пуст. Пользовательский объект выглядит следующим образом:
ACL: {*: {…}, vIl61voP42: {…}}
createdAt: "2019-11-08T11:47:44.102Z"
emailVerified: true
objectId: "vIl61voP42"
origin: "Web App"
sessionToken: undefined
updatedAt: "2019-11-08T11:50:19.633Z"
username: "dfgg@dfgg.com"
Моя цель - дать пользователю доступ к приложению без необходимости входа в систему вручную и создания сеанса. Из документов Parse я понял, что, как только мы получим пользователя, вернувшегося с Parse.User.current()
, это будет означать, что этот пользователь войдет в систему, и поэтому я смог установить и сохранить новые данные в объекте пользователя, что не так ...
Для регистрации у меня есть стандартная регистрация Parse согласно документации:
var user = new Parse.User();
user.set("username", "my name");
user.set("password", "my pass");
user.set("email", "email@example.com");
try {
await user.signUp();
// Hooray! Let them use the app now.
} catch (error) {
// Show the error message somewhere and let the user try again.
alert("Error: " + error.code + " " + error.message);
}
После того, как форма регистрации отправлена, пользователь получает ссылку для подтверждения по электронной почте, которая перенаправляет их в мое приложение url
,Вот как выглядят настройки моего сервера Parse:
const api = new ParseServer ({
...
verifyUserEmails: true,
emailVerifyTokenValidityDuration: 0,
preventLoginWithUnverifiedEmail: true,
customPages: {
// App
passwordResetSuccess: settings["appUrl"] + "/login",
verifyEmailSuccess: settings["appUrl"] + "/dashboard",
linkSendSuccess: settings["appUrl"] + "/email-confirmation",
// Parse
invalidLink: settings["serverUrl"] + "/expired",
choosePassword: settings["serverUrl"] + "/choose_password"
}
...
})
Наконец, когда пользователь прибывает на мой dashboard
маршрут по ссылке для подтверждения электронной почты, я получаю текущего пользователя через await Parse.User.current()
, который возвращает мне пользователяобъект без токена сеанса. Также проверено на моей локальной базе данных разработчика, и сессия не создается.
Есть идеи?