检查文件/页面是否允许匿名访问

时间:2016-01-20 19:41:05

标签: c# global-asax

我正在处理Global.asax方法中的Application_BeginRequest文件。如何确定当前请求的文件是否需要授权?

我知道我可以找出当前用户是否可以访问这样的文件:

UrlAuthorizationModule.CheckUrlAccessForPrincipal(path, user, httpVerb)

...但我需要知道 该文件是否公开,无论用户是否提出请求(无论他们是否已登录)。

为用户传入null将引发异常。也许我可以传递一个匿名用户的实例,但我不知道从哪里开始。

我将使用此信息进行进一步检查,作为SSO验证的一部分。

1 个答案:

答案 0 :(得分:0)

由于CheckUrlAccessForPrincipal方法告诉您某个用户是否有权访问特定资源,因此传入匿名用户(而不是当前用户)会告诉您任何人是否可以访问那资源。

  1. 创建匿名用户:

    var anonymousUser = new GenericPrincipal(new GenericIdentity(String.Empty, String.Empty), new string[] { });
    
  2. 将用户传入CheckUrlAccessForPrincipal方法:

    bool isPublicResource = UrlAuthorizationModule.CheckUrlAccessForPrincipal(virtualPath, anonymousUser , HttpContext.Current.Request.HttpMethod);