Я знаю, что вы сказали, что учетные записи: пакет паролей казался немного «излишним», но на самом деле это действительно так. То, что вы получаете, это подключаемый интерфейс (через учетные записи - ui и другие пакеты, которые его строят). Подход, который я принял, - это (что хорошо работает даже для приложений, поддерживающих несколько пользователей, поскольку в конечном итоге вам все равно нужно загружать стартовых пользователей).
Во-первых, я использую комбинацию учетных записей: пароль и аланинг: роли. Если вам абсолютно не нужна часть ролей, вы, вероятно, могли бы уйти без нее, но во всех моих личных случаях я нашел полезным иметь несколько уровней ACL для разных пользователей. Мы могли бы вступить в целую философскую дискуссию о том, как использовать роли/группы для блокировки отдельных функций, но это не в тему для обсуждения.
Далее вам необходимо загрузить ремень пользователя (ов). Где-то в вашей папке /server
вы будете делать что-то вроде:
if (Meteor.users.find({}).count() == 0) {
// No users created...create default users
Accounts.createUser({
username: 'myuser',
email: '[email protected]',
password: 'myp4ssw0rd!',
profile: { profileProp: 'propVal` }
});
// Add new user to whatever roles needed
}
Есть еще несколько вещей, которые я обычно делаю здесь, как проверка, чтобы узнать, существуют ли мои роли, а если нет, то создайте их, прежде чем я пытаюсь справиться пользователей , но ключ здесь должен сделать это при запуске сервера.
После того, как вы создали своих пользователей и роли, необходимо проверить/проверить пользователя/роли в вашем приложении. Для пунктов меню вы можете отображать/скрывать вещи на основе того, был ли пользователь зарегистрирован и/или имеет определенную роль, и вы также должны проверить на маршрутах приложений, для которых требуются ACL, например, ваш маршрут администратора. Кроме того, используйте идентификатор пользователя во всех ваших публикациях, а также для ограничения данных, которые могут видеть ваши пользователи. Не полагайтесь только на скрытие опции меню ... безопасность через неизвестность просто не работает.
Почему я предлагаю сделать это таким образом? Во-первых, это не так много кода. Вы могли бы буквально сделать это, вероятно, в 20 строках, максимум и иметь полную настройку аутентификации. И преимущество этих строк кода значительно перевешивает 30-минутные вершины, которые вам потребуются, так как теперь у вас будет «реальная» аутентификация пользователя в вашем приложении и есть возможность делать такие вещи, как OAuth, если вы когда-нибудь решите в будущем. Самое главное, что вы разблокируете плагины для предварительного создания UI, которые вам не нужны для программирования, встроенных и дополнительных методов для проверки ACL, возможности блокировки данных пользователем, и вам не нужно пытаться реализовать свое собственное решение.
Достаточно справедливо, это некоторые хорошие аргументы –