Аутентификация пользователя без внутренних

У меня есть простое приложение Backbone.js с Userмоделью с разными ролями, и я использую json-server для эмуляции некоторых базовых компонентов. Мне нужно сделать базовую аутентификацию, т. Е. Мне нужен мой db.json, чтобы иметь возможность { "users" : [ { "login" : "admin" , "password" : "password" , "role" : "admin" , «id» : 1 } ] } и сохраните его сеанс где-нибудь (для этого ему не нужно было входить каждый раз, когда он обновляет свой браузер). У меня есть файл, в котором у меня уже есть var User = User Магистраль . Модель . extend ({ defaults : { login : "" , password : "" , role : "" }, // Обновлен url : function () { return "http: // localhost: 3000 / users? login =" + this . attributes . login + "& password =" + this . attributes . password ; } }); s:

login

и вот моя Userмодель:

password

Я не очень хорошо понимаю, как я могу управлять аутентификацией (т. Е. Вводить loginи tokenформировать и хранить сессию пользователя без надлежащего бэкэнд). Я думал о создании Userполя в моей Userмодели и заполнении в каждый раз, когда пользователь подписывается и сохраняет его в файлах cookie, но я не понимаю, как это сделать в любом случае. Я был бы очень благодарен, если бы кто-то помог мне с этой задачей.

ADDDED Это моя функция входа в систему:

signIn: function () {
    var login = $('#js-login').val();
    var password = $('#js-password').val();

    if (login && password) {
        var currentUser = new User({
            login: login,
            password: password
        });
        currentUser.fetch({
            success: function () {
                console.log(currentUser.toJSON());
            },
            error: function (err) {
                console.log(err);
            }
        });
    }
}

Но вместо поиска пользователя с моего json-сервера он просто создает нового пользователя со всеми пустыми атрибутами, кроме значений полей ввода #js-loginи #js-passwordввода

ADDED Я предполагаю, что должен найти своих пользователей по запросу, urlуказанному выше, в моей коллекции, но на самом деле я не понимаю, как бы я справился с этим

Репо с моим проектом

javascript,jquery,session,backbone.js,login,

1

Ответов: 2


1 принят
+50

Это упрощает поток для вашего приложения:

  • Каждый раз, когда пользователь открывает ваш сайт, проверьте его файлы cookie.

    • Если файлы cookie содержат информацию о пользователе (сохраненное имя пользователя, пароль), проверьте соответствие информации с вашей БД. Если это согласовано, перейдите на главную страницу. В противном случае, очистите файлы cookie, перейдите на страницу входа в систему

    • Если файлы cookie не содержат информацию о пользователе, перейдите на страницу входа в систему

  • На странице входа в систему, после успешного входа пользователя, сохраните информацию о пользователе в файлы cookie для проверки следующего времени.

Вы можете использовать некоторый механизм для кодирования информации пользователя (токены, шифрование ...) для защиты информации, хранящейся в файлах cookie / сеансах. Но хранить аутентификацию БД в клиенте - это действительно слабая точка безопасности. Пример кода ниже:

Модель:

var User = Backbone.Model.extend({
    url: function () {
        return "users?login" + this.attributes.login + "&password=" + this.attributes.password;
    },

    isAdmin: function () {
        return (this.get("role") == "admin");
    }
});

На ваш взгляд:

// Load username password from cookie (just simple example)
var username = $.cookie("username"),
    password = $.cookie("password");

if (username && password) {
    var userModel = new User({
        login: username,
        password: password
    });
    userModel.fetch({
        success: function () {
            if (userModel.isAdmin) {
                // e.g. go to admin page
            } else {
                // e.g. go to normal user page
            }

            // Save to cookie/session here
        },
        error: function () {
            // Go to login page
        }
    });
} else {
    // Go to login page
}

О cookie, вы можете указать Как установить / удалить файл cookie с помощью jQuery?

О получении формы ввода имени пользователя и пароля вы можете просто использовать простой селектор jQuery (очень просто для него, например https://www.formget.com/jquery-login-form/ )


0

Здесь вы можете обратиться к этому плагину, который использует в основном функции jquery, как указано в документации здесь

Я бы не стал вдаваться в подробности, поскольку документация понятна. Это относится к аутентификации с помощью jquery

Теперь, если вы хотите аутентифицировать пользователя с помощью backbone.js

если маршрут вернется с помощью {loggedIn: false}, базовый маршрутизатор отправит пользователя только на страницы входа / регистрации. Но если он вернется с информацией о профиле пользователей, это, очевидно, означает, что у него сеанс.

подключите $ .ajax для ответа на 401 (неавторизованные) коды состояния.

Также упомянуть, как указано в этой потоке stackoverflow

Надеюсь, он может немного помочь вам.

Ниже приведено пошаговое руководство по аутентификации с помощью backbone.js

JavaScript, JQuery, сессия, Backbone.js, Логин,