У меня есть приложение Meteor, в котором мне нужно установить некоторый тип переменной для приложения, если пользователь является администратором, поэтому я могу использовать его позже, чтобы показать/скрыть определенные элементы HTML. Чтобы выяснить, является ли пользователь администратором, я должен проверить объект в LocalStorage на устройстве и посмотреть, соответствует ли он секретной строке, которая предоставит пользователю доступ администратора. Однако я не хочу, чтобы клиент видел секретную строку. На данный момент, у меня есть файл server/server.js
, который имеет функцию в ней так:Meteor Проверить, является ли пользователь администратором
function isAdmin(cookie) {
if(cookie == "secret") {
return true;
} else {
return false;
}
}
Однако, мне кажется, я не могу получить доступ к этой функции из моего основного .js файл для приложения, которое я использую как это:
Meteor.startup(function(){
admin = false;
if(typeof(Storage) !== "undefined") {
cookie = localStorage.getItem("admin");
admin = isAdmin(cookie);
}
});
Я не знаю, если я пытаюсь идти об этом неправильно, все, что мне нужно сделать, это проверить LocalStorage для печенья каждый раз, когда сайт загружается клиентом и сравнить его в секретную строку, а затем установите переменную, указывающую, является ли пользователь администратором, который я могу использовать в остальной части приложения. Я также нуждаюсь в том, чтобы он был безопасным, поэтому клиент не может просто назначить переменную или что-то еще администратором.
В вашем подходе код находится на клиенте, секрет находится на клиенте в файле cookie, а соответствующий секрет также находится в вышеупомянутом клиентском коде. Вы даже назвали функцию 'isAdmin', чтобы упростить ее поиск. Там нет никакой безопасности. –
Вот почему я пытаюсь выяснить правильный способ сделать это. –
Как ответил @adlen, alanning: роли - хорошее место для начала –