【问题标题】:Redirect user to the same page after logging out注销后将用户重定向到同一页面
【发布时间】:2015-01-21 13:42:17
【问题描述】:

有时我希望能够让用户注销,但留在他们已经在的页面上。

我正在使用invalidateSession 将用户注销,但这会重新加载应用程序并将它们带到我的应用程序的根 URL - 登录页面。在某些情况下,这不是我想要的行为,我希望用户留在他们所在的页面上,但显示该页面的“已注销”版本。

有没有办法让用户注销并且 a) 不重新加载应用程序,或者 b) 指定注销后应重定向到哪个页面?

我尝试过转换到另一条路线,但似乎没有办法在 会话无效(这不是承诺)之后执行此操作。

【问题讨论】:

    标签: ember.js ember-simple-auth


    【解决方案1】:

    在您的应用程序路由中,您可以通过执行类似的操作来覆盖它

    import ApplicationRouteMixin from 'simple-auth/mixins/application-route-mixin';
    
    export default Ember.Route.extend(ApplicationRouteMixin, {
    
    actions: {
      sessionInvalidationSucceeded: function(){
       var currentRoute = this.controllerFor('application').get('currentRouteName');
       this.transitionTo(currentRoute); // or whatever route you want
      },
      sessionInvalidationFailed: function(error){
        console.log(error);
        var currentRoute = this.controllerFor('application').get('currentRouteName');
        this.transitionTo(currentRoute); // or whatever route you want
      }
    }
    });
    

    sessionInvalidationSucceeded 的默认行为基本上是重新加载窗口,您可以通过覆盖方法来覆盖它

    【讨论】:

    • 一定要在申请路径中吗?它可能在我需要不同行为的特定于该页面的路线中吗?
    • 你可以试试看它是否有效,或者只是检查 currentRoute 变量,它应该是你当前页面的路由,如果它等于某个路由,则执行其他操作,否则执行其他操作
    猜你喜欢
    • 2014-01-04
    • 2014-07-23
    • 2014-10-31
    • 2012-02-20
    • 1970-01-01
    • 2018-09-21
    • 1970-01-01
    • 2015-08-17
    • 2014-06-28
    相关资源
    最近更新 更多