0

我的 ASP.NET 应用程序中存在验证(身份验证)问题 - 我使用启用了 cookie 的 FormsAuthentication,但是由于安全原因,我被迫还使用另一个外部授权源(基于用户名/密码组合为用户提供“会话ID")

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

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

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

或者

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

4

2 回答 2

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 之外的所有类型的请求。

于 2012-10-10T07:43:23.057 回答
0

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

于 2012-10-10T07:47:30.310 回答