我正在处理Global.asax
方法中的Application_BeginRequest
文件。如何确定当前请求的文件是否需要授权?
我知道我可以找出当前用户是否可以访问这样的文件:
UrlAuthorizationModule.CheckUrlAccessForPrincipal(path, user, httpVerb)
...但我需要知道 该文件是否公开,无论用户是否提出请求(无论他们是否已登录)。
为用户传入null
将引发异常。也许我可以传递一个匿名用户的实例,但我不知道从哪里开始。
我将使用此信息进行进一步检查,作为SSO验证的一部分。
答案 0 :(得分:0)
由于CheckUrlAccessForPrincipal
方法告诉您某个用户是否有权访问特定资源,因此传入匿名用户(而不是当前用户)会告诉您任何人是否可以访问那资源。
创建匿名用户:
var anonymousUser = new GenericPrincipal(new GenericIdentity(String.Empty, String.Empty), new string[] { });
将用户传入CheckUrlAccessForPrincipal
方法:
bool isPublicResource = UrlAuthorizationModule.CheckUrlAccessForPrincipal(virtualPath, anonymousUser , HttpContext.Current.Request.HttpMethod);