2013-11-14 4 views
1

Я пишу приложение метеоритов прямо сейчас, и я привык к новому пакету Iron Router (в отличие от пакета маршрутизатора, который я использовал раньше).Разрешить/запретить маршрут железного маршрутизатора

У меня есть набор маршрутов, которые должны быть доступны только пользователям со специфическими свойствами. Чтобы быть конкретным, я использую пакет Роли. Мой способ достижения этого на данный момент состоит в том, чтобы определить перед функцией, которая запускает условное выражение, и перенаправляет на страницу входа или ошибки, если у пользователя нет соответствующей роли. Вот только быстрый пример (coffeescript):

this.route 'home', 
    path: '/' 
    template: 'dashboard' 
    before: -> 
     unless Meteor.userId() 
     this.redirect 'userUnauthorized' 
     do this.stop 

Вопрос мой, есть ли лучший способ сделать это? Кажется, должен быть какой-то способ добавить набор разрешений и применить это разрешение к маршруту, а не писать условные условия доступа для каждого маршрута.

ответ

1

Вы можете настроить глобальный «До» на своих маршрутах. Я не использую роли в моем текущем приложении, но мы перенаправлять пользователей по всему миру на основе того, являются ли они или не подписали в

Вы могли бы сделать что-то вроде этого:.

Router.before(function() { 
    unless(Meteor.userId()) { 
    this.redirect('userUnauthorized'); 
    do (this.stop) 
    } 
}, {except: ['userUnauthorized', 'otherPageUnauthorizedUsersAllowedToSee']}); 

Мы используем нечто подобное прямо ниже нашего Router.configure()

+0

Hi Spencer. Безопасен ли ваш подход? Я имею в виду, что маршрутизатор доступен на клиенте. –

+2

Вы не можете запретить пользователям просматривать какой-либо шаблон, который вы отправляете клиенту, независимо от перенаправления. Как вы говорите, маршрутизатор доступен на клиенте, так как я понимаю, что маршрутизация - это скорее тип UI/UX. Что вы можете и должны сделать, так это убедиться, что вы не отправляете какие-либо коллекции или данные пользователям, которые не должны их видеть и что вы можете делать. Если вы вставляете важные данные в шаблоны просмотра, вы просите о проблемах. В конце концов, пользователь может перейти на любую страницу нашего приложения. То, что отображается на этой странице, основано на роли/разрешениях пользователей. – Spencer

Смежные вопросы