【发布时间】:2012-06-27 01:17:37
【问题描述】:
我在 ASP.Net 中使用表单身份验证方法,问题是它只保护“.aspx”文件。我正在尝试保护“kcfinder”文件夹中的“.php”文件免受未经身份验证的用户的攻击。
我在“App_Code”文件夹中实现了这个类。
public class KCChecker
{
public static void Process(HttpApplication Application)
{
HttpRequest Request = Application.Context.Request;
HttpResponse Response = Application.Context.Response;
string url = Request.Path.ToLower();
if (url.IndexOf("/kcfinder/") == 0 && !HttpContext.Current.User.Identity.IsAuthenticated)
{
Response.Redirect("/");
}
}
}
问题是它总是说“对象引用未设置为对象的实例”。在HttpContext.Current.User.Identity.IsAuthenticated。我尝试将其更改为Application.Context.User.Identity.IsAuthenticated,但仍然显示相同的错误。
有什么方法可以在这个自定义模块的 Process 函数中访问用户对象?
【问题讨论】:
-
免责声明 - 我没有在 IIS 下运行 PHP 的经验。但是,IIS 有某些类型配置为由 Asp.Net 处理,我不希望 php 由 Asp.Net 处理,因此 Context 将为空。
-
上下文不为空。上下文对象的请求和响应都在工作。 ONLY Request.User 为空。
-
那么 Request.IsAuthenticated 返回什么 - 真/假?可能是您启用了匿名访问吗?我也是found这个:runAllManagedModulesForAllRequests="true"
-
Request.IsAuthenticated 总是返回 false。我刚刚在 ASP.NET 论坛上阅读了该主题。是的!添加“
”允许我访问 Application.Context.User.Identity.IsAuthenticated。您可以在下面发布您的答案吗?这样我才能接受?干杯。 -
哦,不。我不确定它是否允许我访问该对象,但添加该属性后,我的表单authenticaiton 正在保护kcfinder 文件夹。这是我想要的,甚至是最好的解决方案,而不是由 HttpHandler 处理。谢谢。
标签: c# asp.net c#-2.0 asp.net-2.0 form-authentication