URL Доступ к страницам stati c HTML - на платформе Parse.com до входа - PullRequest
0 голосов
/ 03 мая 2020

Я новичок в разборе и пытался создать с ним простое веб-приложение, используя stati c HTML страниц, CSS и JS. Я использовал облачные функции также для нескольких задач.

Дело в том, что я создал страницу входа и функцию, которая проверяет, вошел ли пользователь в веб-приложение с JS на стороне клиента, и выглядит это так:

function CheckUserLogin(){ 
   var currentUser = Parse.User.current();
   if (currentUser) {
    //do nothing
   } else {
    //rediect user to login html page
    window.location.href = “loginpage.html”
  }
}

Дело в том, что если пользователь переходит на страницу /Home.html через URL браузера, он может просматривать страницу в течение нескольких секунд, пока js не проверит, вошел ли он в систему, и перенаправит ли его пользователя на страницу входа. , Думаю, это не так безопасно ...

Есть идеи, как получить решение для решения этой задачи с помощью облачных функций js или parse.com?

1 Ответ

0 голосов
/ 03 мая 2020

Вы можете сделать следующие две вещи для достижения этой цели:

Сначала вам нужно переопределить Parse login с вашим собственным логином, вы можете сделать что-то вроде этого:

// this will add sessionToken in a cookie, which can be later used to check if your user is logged in or not
app.post('/login', function(req, res) {
    Parse.User.logIn(req.body.username, req.body.password).then(function(user) {
        var val = JSON.stringify({sessionToken: user.getSessionToken()});
        var opts = {path: '/', httpOnly: true};
        res.cookie('parse.session', val, opts);
        res.redirect('/');
    }).then(null, function(error) {
        res.clearCookie('parse.session');
        res.render('pages/login', { flash: error.message });
    });
});

Теперь вы необходимо добавить промежуточное программное обеспечение, чтобы получить этого пользователя от повара ie:

// Middleware adding current user to `req.user` or redirecting to login if not logged in
app.use(function (req, res, next) {
    var cookie = null;
    new Parse.Promise.as().then(function() {
        cookie = JSON.parse(req.cookies['parse.session']);
        return Parse._request('GET', 'users/me', {}, {sessionToken: cookie.sessionToken});
    }).then(function (userData) {
        userData.sessionToken = cookie.sessionToken;
        req.user = Parse.Object.fromJSON(userData);
        next();
    }).then(null, function () {
        res.clearCookie('parse.session');
        return res.redirect('/login');
    });
});

Теперь можно смело предполагать, что если пользователь достиг Home. html, он будет зарегистрированным пользователем. Тем не менее, я бы не советовал помещать HTML файлы в папку publi c, вместо этого используйте шаблонизатор.

...