Я пишу приложение метеоритов прямо сейчас, и я привык к новому пакету Iron Router (в отличие от пакета маршрутизатора, который я использовал раньше).Разрешить/запретить маршрут железного маршрутизатора
У меня есть набор маршрутов, которые должны быть доступны только пользователям со специфическими свойствами. Чтобы быть конкретным, я использую пакет Роли. Мой способ достижения этого на данный момент состоит в том, чтобы определить перед функцией, которая запускает условное выражение, и перенаправляет на страницу входа или ошибки, если у пользователя нет соответствующей роли. Вот только быстрый пример (coffeescript):
this.route 'home',
path: '/'
template: 'dashboard'
before: ->
unless Meteor.userId()
this.redirect 'userUnauthorized'
do this.stop
Вопрос мой, есть ли лучший способ сделать это? Кажется, должен быть какой-то способ добавить набор разрешений и применить это разрешение к маршруту, а не писать условные условия доступа для каждого маршрута.
Hi Spencer. Безопасен ли ваш подход? Я имею в виду, что маршрутизатор доступен на клиенте. –
Вы не можете запретить пользователям просматривать какой-либо шаблон, который вы отправляете клиенту, независимо от перенаправления. Как вы говорите, маршрутизатор доступен на клиенте, так как я понимаю, что маршрутизация - это скорее тип UI/UX. Что вы можете и должны сделать, так это убедиться, что вы не отправляете какие-либо коллекции или данные пользователям, которые не должны их видеть и что вы можете делать. Если вы вставляете важные данные в шаблоны просмотра, вы просите о проблемах. В конце концов, пользователь может перейти на любую страницу нашего приложения. То, что отображается на этой странице, основано на роли/разрешениях пользователей. – Spencer