2015-12-21 84 views
2

我有一個authenticated路由,其中​​動態段:slug用作單獨組織的短名稱。每個組織內都有個人和團體。不同的組織可能有相同的individual IDsgroup IDs檢測動態段中的更改

因此,網址/bigcompany/s/individual/1/smallcompany/s/individual/1都是有效的,並且會帶您到每個這些公司的ID = 1的個人。

router.js

Router.map(function() { 
    this.route('authenticated', { path: '/:slug' }, function() { 
     this.resource('individual', { path: 's/individual/:id' }, function() { 
      ... 
     }); 
     this.resource('groups', { path: 's/groups' }, function() { 
      this.route('group', { path: ':id' }); 
     }); 
    }); 

    this.route('login', { path: ':slug/s/login' }); 
}); 

我從/bigcompany/s/login登錄後,就帶我去/bigcompany/s/individual/1,並載入個別模型。

問題是我可以直接將瀏覽器中的URL從bigcompany更改爲smallcompany,它將繼續並加載模型/smallcompany/s/individual/1

有沒有一種方法,如果用戶直接編輯在瀏覽器的URL到不同的:slug,這將註銷用戶原有:slug和負載的登錄頁面的新:slug

+3

如果用戶直接更改瀏覽器中的網址,整個應用程序將被重新加載,用戶是否登錄到不同的子彈取決於您路由中的代碼,服務器以及您如何管理Cookie 。 – Gaurav

回答

1

我最終使用JavaScript API來處理名爲JavaScript Cookie的瀏覽器cookie。當一個組織中的用戶登錄我在authenticated路線調用

`Cookies.set('slug', credentials.slug);` 

然後我檢查在URL當前:slugslug餅乾匹配。

如果用戶在URL中切換到不同的:slug,它會將用戶登出,轉換到新的:slug的登錄頁面,並刪除slug Cookie。