如何检查是否使用cookie执行了用户验证(FormsAuthentication)?

时间:2012-10-10 07:22:07

标签: iis cookies formsauthentication

我的ASP.NET应用程序中存在验证(身份验证)问题 - 我使用启用了Cookie的FormsAuthentication,但由于安全原因,我不得不使用另一个外部授权源(基于用户名/密码组合)给用户“sessionID”)

当用户使用其用户名/密码凭据登录时,应用程序正常工作(因此,获取sessionID)。但是,由于启用了cookie,可以“跳过”登录页面(用户被重定向到default.aspx)并且他不会获得正确的sessionID。

我的问题是是否有可能检查用户是否

a)来自登录页面(因此,已被重定向到default.aspx)

OR

b)formsAuthentication是基于cookie数据而不是用户名/密码

执行的

2 个答案:

答案 0 :(得分:1)

假设您在用户登录后重定向到default.aspx页面(这样页面加载现在包含来自重定向客户端的身份验证cookie),您就会知道它们是否使用global.asax.cs进行了身份验证。 Application_AuthenticateRequest事件“:

protected void Application_AuthenticateRequest(Object oSender, EventArgs eA)
{
    // Wire up authenticated principal with user information.

    if (this.Request.IsAuthenticated == true)
    {
         // do something with this.User.Identity.Name to map to a "sessionid"
    }
}

您询问是确定他们是刚刚登录并作为重定向用户登陆家中,还是直接使用浏览器保存的cookie来回家(或任何其他视图),但我认为这无关紧要。如果您将用户的额外身份验证密钥存储为处理登录的一部分,那么您可能应该在AuthenticateRequest事件中对受保护页面的所有访问进行此操作。注意:该事件被大量激活(css文件,图像,等等)。您可能希望忽略除.aspx之外的所有类型的请求。

答案 1 :(得分:0)

是的,您可以查看用户来自哪个页面" request.UrlReferrer.ToString"并将其与您的登录页面URL进行比较。