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