// route/login.js // this can be in other page as well
import Ember from 'ember';
export default Ember.Route.extend({
session: Ember.inject.service(),
beforeModel() {
if(this.get('session.isAuthenticated')) {
this.transitionTo('index'); // as you can see if session is authenticated I will redirect it to index but if not all pages will remain in the same page which is login.
}
}
});
3条答案
按热度按时间0lvr5msh1#
最简单的方法就是你建议的方法(替换索引)。2但是,我给你另一个场景,如果你喜欢的话,你可以这样做,但是它需要一些时间来实现。
使用beforeModel()
我不确定你是否使用了什么来进行身份验证和授权,但是,这可以帮助你。例如,你可以只获得需要通过令牌验证的会话(在我的情况下是从服务器),如果它是无效的,我会将每个人重定向到一个单独的页面,现在登录,但你可以将其更改为UC。
因此在application.js中,您可以轻松地
然后您可以对其进行授权。如果可以,您可以将用户重定向到适当页面,但如果不可以,您可能希望将其重定向到其他位置。
请记住,如果要使会话无效,可以轻松使用
简而言之,你可以很容易地让你的令牌API或任何你从服务器发送到你的Ember应用程序无法访问,所以Ember无法解决它将重定向到另一个页面。
我希望我能适当地解释一下,你明白我的意思。
pbwdgjma2#
你可以在你的Ember应用程序中实现一点点的工作。
如果你的API服务器返回了一个可识别的状态,比如
503
代码,你可以使用一个规则让你的API调用使用routeactions
重定向到你的maintenance
route,或者使用已经加载的内容。这允许你的Ember应用程序提供静态或缓存数据的页面,以保持无缝浏览,改善用户体验。当然,这如果停机时间很短(几秒钟),则可以使用。SEO方面,如果你也想让内容暂时对蜘蛛不可用,你可能需要在你的网络服务器上设置一个自定义规则(nginx,apache...)。
rks48beu3#
创建一个重新打开Ember.Route的初始化器,并在beforeModel钩子中转换到'down for maintenance'路由(在调用super之前):
完成后删除它。