Я хочу иметь два макета, один для гостей, который может видеть некоторые маршруты, такие как: , /contacts
, /rules
и т. Д. ... и еще один для аутентифицированных пользователей, это означает, что они должны прежде чем они смогут перейти на авторизованные маршруты. Как определить два макета для разных групп маршрутов?Несколько макетов в ember.js 2.7.0
ответ
есть способ использовать маршрутизатор Ember в свою пользу, чтобы решить эту проблему путем вложения аутентифицированных маршрутов внутри маршрут. Вот пример маршрутизатора:
Router.map(function() {
this.route('contacts');
this.route('rules');
this.route('authenticated', { path: '/' }, function() {
this.route('settings');
this.route('profile');
});
});
Переход к /contacts
и /rules
не нужно никакой аутентификации, но собирается /settings
бы.
Обратите внимание, что опция path
передана на маршрут authenticated
. Поскольку мы установили его в /
, чтобы он не отображался в URL-адресе, он заменит application.index
. Если это звучит странно для вас, прочитайте о том, какая индексная страница in the Ember.js tutorial.
Я реализовал @ блокировки, предлагаемые .. вот ember-twiddle..https: //ember-twiddle.com/f91a385096a2acb1f1e30be94b2b2879 Я включил службы для поддержания состояния аутентификации. – kumkanillam
спасибо, ребята, похоже, что я искал –
@kumkanillam, вы проверите этот URL-адрес twiddle? – sheriffderek
Ответ заключается в обслуживании, которое сохраняет состояние пользователя.
// services/user-state
import Ember from 'ember';
export default Ember.Service.extend({
loggedIn: true
});
Затем, в зависимости от того, как вы организовывали вещи, вы можете ввести службу в контроллер или маршрут. Итак - у вас будет доступ к loggedIn
В вашем шаблоне вы должны использовать handlebars/htmlbars if
helper.
{{#if loggedIn}}
render logged-in stuff...
{{/else}}
render message explaining that this is only for logged in users
{{/if}}
Вы также можете перенаправить пользователя на другой маршрут на основе текущих данных сеанса. У вас могут быть целые маршруты для определенных ролей или у вас могут быть части вашего шаблона, которые ведут себя по-разному на основе роли.
Если вы не вошли в систему, возможно, вы не сможете посетить страницу своего профиля. Этот маршрут может быть полностью отключен, или он может перенаправить вас на страницу входа. С другой стороны, может быть, это просто компонент кнопки входа в систему или часть вашего шаблона, которая показывает, если вы не вошли в систему против «hello sheriffderek», если бы вы были.
Есть также Ember addons для более надежных «ролевых» контуров. Подумайте о странице блога, которая может иметь кнопку «изменить» для фактического пользователя, но кнопка «флаг» для модератора. В этом случае вы не можете просто иметь совершенно другой маршрут, где-то в нем.
Большинство аутентификационных аддонов/библиотек будут иметь «сервис» с каким-то состоянием сеанса. Но Шаблон wise, основная идея похожа на инструкцию JS if/else.
if (helpful) {
this.upvote();
} else {
// something else
}
Надеюсь, это поможет. :)
Вопрос действительно говорит - «макеты» – sheriffderek
Проголосовал без комментариев! наконец, мы здесь, чтобы делиться, учиться и получать удовольствие. – kumkanillam
https://blog.embermap.com/lowest-common-ancestor-fbf5d5313a1 В этом сообщении есть несколько хороших примеров того, когда услуга становится хорошей идеей. :) – sheriffderek
Посмотрите на ember-simple-auth аддона :)
Она имеет много полезных классов все о разрешении, в том числе Mixins для вашего USECASE. Если вы хотите, чтобы сделать маршрут видимым только для зарегистрированных пользователей, просто используйте AuthenticatedRouteMixin так:
/app/routes/protectedRoute.js
import Ember from 'ember';
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
export default Ember.Route.extend(AuthenticatedRouteMixin);
- 1. Несколько макетов в Ember.js?
- 2. Несколько макетов в WPF
- 3. Несколько макетов в SmartWatch
- 4. Несколько макетов в hapijs
- 5. несколько макетов В JavaFX
- 6. Несколько макетов в ror
- 7. Mean.js Несколько макетов, серверных или угловых макетов
- 8. Несколько маршрутизаторов в ember.js?
- 9. asp.net mvc: несколько макетов
- 10. Orchard CMS Несколько макетов
- 11. Несколько макетов с угловым
- 12. Xmodmap и несколько макетов
- 13. Несколько макетов android
- 14. Yii2 Несколько макетов Вопросы
- 15. Включить несколько макетов программно
- 16. Несколько макетов для фрагмента
- 17. Одиночные или несколько макетов?
- 18. Надуйте несколько макетов
- 19. Несколько макетов в НПЗ CMS
- 20. Несколько менеджеров макетов в Java
- 21. Несколько макетов в zend framework
- 22. Несколько макетов приложений в марионетке
- 23. Несколько макетов XAML в WPF
- 24. Несколько макетов блога в Wordpress
- 25. AngularJS - несколько макетов
- 26. несколько независимых маршрутов в Ember.js
- 27. Несколько событий 'on' в ember.js
- 28. Несколько макетов для одного ExpandableListView
- 29. Несколько макетов с UI-Router
- 30. Несколько макетов на рельсах 4
Добро пожаловать в переполнение стека! Покажите код, чтобы узнать, что вы пробовали до сих пор. –
Я абсолютно новичок в ember.js, и у меня нет никакого кода, я просто хочу понять концепцию, как я могу использовать множество макетов в ember. –