2014-10-16 60 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