我有一个网站,托管了许多asp.net应用程序。有些是用MVC2编写的,有些是用MVC3编写的,有些不是用内部和二进制部署编写的(尽管我们可以找到源代码),还有很多是用ASP.Net 2.0 webforms编写的。在所有这些站点中,我们使用来自登录应用程序的单个登录页面。我们可以这样做,因为所有应用程序共享:
我的问题是,他们也有共同的安全问题,没有曲奇欺骗保护。我的计划是在登录cookie中添加一些额外的信息( ip的前两个字节,用户代理)(可能在useradata字段中),然后在接受cookie之前对每个请求进行验证。
我的问题是,asp.net在哪里检查表单身份验证票证并加载用户,我是否可以在使用登录之前重写它来检查一些额外的内容。
如果我不必将这段代码添加到每个global.cs中,并将其放入某个dll中,并在配置文件中引用该dll,那将是一件好事。
发布于 2013-08-09 02:30:46
除非编写一个新的FormsAuthenticationModule,,否则不能覆盖身份验证,但是有一种更简单的方法。当ASP.NET管道处理请求时,在每一步都会引发一个事件,您可以在这里访问ASP.NET管道并完成您的工作。
在这种情况下,可以在PostAuthenticateRequestHandler事件处理程序中验证cookie。
HttpCookie authCookie = Context.Request.Cookies["YourFormsCookieName"];
if (IsValidAuthCookie(authCookie))
{
// do some stuff
}
else
{
// expire cookie using FormsAuthentication.Signout()
// do some stuff
}
这是一个有用的链接:表单认证
https://stackoverflow.com/questions/9899473
复制相似问题