2014-10-16 57 views
3

我希望能夠爲我的asp.net應用用戶管理2級驗證。這個想法是,用戶可以通過「記住我」選項永久登錄並訪問一些沒有非常敏感數據的用戶頁面,但他們每次訪問其他頁面時都必須重新輸入登錄名/密碼(例如他們的付款信息)。此安全頁面的身份驗證僅適用於會話。 當然,我可以通過處理另一個cookie手動執行此操作,並讓Identity處理永久性Cookie,但也許有一種方法可以僅使用Identity來完成此操作。使用Asp.Net Identity 2.0管理2級驗證

你可以有一個想知道我想用亞馬遜網站實現的想法。您可以永久登錄,然後在網站上始終歡迎您的名字,您可以看到您的建議,例如...但如果您想訪問您的帳戶或購買東西,您必須輸入您的登錄名/密碼(然後它只對會話有效)。

謝謝!

回答

1

您可以設置兩個登錄Cookie來表示這一點,您的正常登錄頁面使用默認身份應用程序cookie。但是更安全的頁面會創建一個僅用於您的超級安全區域的不同cookie。

這裏是你如何添加不同的CookieMiddleware用於此目的:

 app.UseCookieAuthentication(new CookieAuthenticationOptions 
     { 
      AuthenticationType = "SuperSecureMode", 
      AuthenticationMode = AuthenticationMode.Passive 
     } 

您可以存儲你這樣的餅乾你重新驗證憑據後,(你會希望以最小的用戶ID,所以你加入可以驗證後):

HttpContext.GetOwinContext().Authentication.SignIn(new ClaimsIdentity("SuperSecureMode")); 

並在您的超級安全的網頁,你會想驗證和獲取用戶ID出來的聲明身份的。

HttpContext.GetOwinContext().AuthenticateAsync("SuperSecureMode"); 
+0

我沒有意識到你可以管理多個這樣的身份cookie,所以謝謝!我幾乎在那裏,當我登錄時,我有這樣的: AuthenticationManager.SignIn(new AuthenticationProperties(){IsPersistent = true},identity.Result); AuthenticationManager.SignIn(new AuthenticationProperties(){IsPersistent = false},新ClaimsIdentity(「SecureSession」)); 它按預期發出2個cookie,但都是持久的。我只需要安裝SecureSession cookie會話。 – Dawmz 2014-10-20 09:40:51