2016-09-14 52 views
0

我有2周不同的網址登錄到應用程序如下與cookie的工作在MVC

對於學員: - http://localhost:56739/trainee/Login/myclientname

對於管理員: - http://localhost:56739/admin/Login/myclientname

我登錄到應用程序中使用低於默認登錄實施

var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: true); 

我觀察到的方法PasswordSignInAsync正在創建cookie的登錄用戶。

但是,我的問題是,如果我使用trainee url登錄並嘗試訪問admin url,則用戶直接登錄到管理應用程序而不要求登錄,因爲該cookie。意味着學員和管理員之間訪問/共享Cookie。

我對admin/trainee的看法不同,但它們與下面的文件夾結構在同一個項目中。 http://i.stack.imgur.com/HyOhW.png

學員和管理員之間切換時,在佈局頁,當我檢查下面的代碼行,這IsAuthenticated雖然admin仍未登錄到應用程序,反之亦然即將實現。

@if (User.Identity.IsAuthenticated) 

我正在使用身份框架進行用戶身份驗證。

如何在admin/trainee之間切換時保持單獨的cookie?

感謝您的幫助!

+0

您應該爲用戶使用角色:Admin,培訓生。然後把'[Authenticate(Roles =「Admin」)]'給管理員區域控制器,''Authenticate(Roles =「Trainee」)]''學員控制器 – trailmax

+0

@trailmax否則不是這種情況。我不同的UI爲管理員和學員..即使有佈局,viewstart是不同的 – Rohit

+0

你仍然可以實現與角色 – trailmax

回答

3

表單身份驗證Cookie在整個應用程序中共享。不同的意見毫無意義。

你有兩個選擇

1)將它們分開成兩個應用程序,所以餅乾不再自動共享。

2)根據評論中的建議,爲管理員帳戶分配角色或權利主張,然後在授權屬性或策略中檢查。

+0

這些是唯一可用的方法..如果我寫cookie中間件怎麼辦? – Rohit

+1

當然,請放心,不要忘記您需要簽名並進行加密和驗證。坦率地說,爲你的數據庫添加一個角色將會少花點功夫。 – blowdart

+0

是啊..我的應用程序是多租戶應用程序,雖然我分開了應用程序或去與這個問題將發生在那裏的角色也 – Rohit