我在ASP.NET 2中创建HttpModule。模块需要根据请求的路径是公有还是受保护来执行不同的逻辑。 web.config使用<system.web><authorization>
标签和几个<location>
标签设置授权。以编程方式确定路径是否受限制
有没有办法让HttpModule找出当前请求的路径是否受保护?我不想在代码中硬编码值。
我在ASP.NET 2中创建HttpModule。模块需要根据请求的路径是公有还是受保护来执行不同的逻辑。 web.config使用<system.web><authorization>
标签和几个<location>
标签设置授权。以编程方式确定路径是否受限制
有没有办法让HttpModule找出当前请求的路径是否受保护?我不想在代码中硬编码值。
如果您使用标准authentication/authorization
那么您可以使用CheckUrlAccessForPrincipal。
UrlAuthorizationModule.CheckUrlAccessForPrincipal(virtualPath, user, verb);
没有直接的方法来查看文件系统条目并获得您的有效权限。并计算在文件或目录上设置的有效权限是...复杂的(这将是一种礼貌的方式)。
似乎是这样一个非常明显的信息,System.IO类应该提供,但显然CLR团队并不这么认为。我认为问题的一部分是固有的竞争条件。给定对象的权限是动态的,可以随时改变。他们甚至可能会在您的权限检查和实际访问对象之间进行更改,导致引发异常。
这些问题有一定的帮助:
最简单的方法就是要求你想要的权限,捕捉异常,如果你没有他们,用返回一个bool是/否值:
// you'll need access to the namespace namespace System.Security.Permissions
public bool HasAccess(string path , FileIOPermissionAccess accessDesired)
{
bool isGranted ;
try
{
FileIOPermission permission = new FileIOPermission(accessDesired , path) ;
permission.Demand() ;
isGranted = true ;
}
catch
{
isGranted = false ;
}
return isGranted ;
}
是的,我正在使用sta ndard配置模式。谢谢! – Jeff