我希望能够为我的asp.net应用用户管理两级身份验证。这个想法是用户可以通过“记住我”选项永久登录并访问一些没有非常敏感数据的用户页面,但是每次他们想要访问其他一些页面时他们都必须重新输入他们的登录名/密码(比如他们的付款)信息)。对安全页面的此身份验证仅适用于会话。 当然,我可以通过处理另一个cookie来手动完成,并让Identity处理永久性cookie,但也许有一种方法只能使用Identity。
您可以了解我想通过亚马逊网站实现的目标。您可以永久登录,然后您的网站名字总是受到欢迎,您可以看到您的推荐等等......但如果您想访问您的帐户或购买某些东西,您必须输入您的登录名/密码(然后它仅对会话有效。
谢谢!
答案 0 :(得分:1)
您可以设置两个登录cookie来表示这一点,您的普通登录页面使用默认的身份应用程序cookie。但是,您更安全的页面会创建一个不同的cookie,仅用于您的超级安全区域。
以下是为此目的添加不同CookieMiddleware的方法:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "SuperSecureMode",
AuthenticationMode = AuthenticationMode.Passive
}
您可以在重新验证凭据后存储您的Cookie(您希望至少添加用户ID,以便稍后验证):
HttpContext.GetOwinContext().Authentication.SignIn(new ClaimsIdentity("SuperSecureMode"));
在您的超级安全页面上,您需要验证并从声明标识中获取用户ID。
HttpContext.GetOwinContext().AuthenticateAsync("SuperSecureMode");