0

我正在尝试 ImageResizer 并正在寻找一种基于角色、组等动态授权用户访问图像(和其他文件)的好方法,从而限制图像访问。我读到 ImageResizer 支持 Url 授权,但不确定到什么程度(只有当我实现它时才会遵循或有帮助者)。最好是可以与他们的磁盘缓存模块一起使用的灵魂。看到了一些关于实现自定义 url 授权的通用信息,但不确定它是否只是为图像路径设置授权的问题,就像任何其他资源一样,然后让 imageresizer 对抗它。或者,如果某些逻辑应该连接到 imageresizer。在这里找到了一些关于 url 授权的信息,但我想我不是第一个实施这种组合的人?

我看到的最佳设置将是一个限制,如果身份验证未授予访问权限,则没有文件(拇指、图像、缓存图像或其他)在线可用。

因此,寻找更多关于这个健全和体面安全的实现的信息/细节,也许这个示例实现/代码存在于我还没有找到的某个地方?

编辑:计算机语言学家链接给了我很多我想要的东西。不过有两件事让我印象深刻。1.是否有任何最佳实践来重新定义事件处理程序中的内容,或者我可以为此特定目的构建服务并在处理程序中使用它?2. 由于这将针对每个图像触发,我想避免直接进行 dbcall 进行权限检查(即尝试为相应用户缓存权限的方法)?或者这对实际的影响通常很小以至于没关系?考虑到这一点,User.IsInRole 是否不会直接调用 dbcall 来确定成员资格?

4

1 回答 1

2

你想太多了。

ImageResizer 对源文件、结果和缓存图像应用相同的安全性。

它遵循 URL 授权规则,但允许您通过Config.Current.Pipeline.AuthorizeImage事件完全控制所有图像授权。

处理该事件,您就可以访问所有可以想象的请求数据,并且您可以设置事件 AllowAccess 变量以根据您想要的任何逻辑允许或拒绝请求。此事件发生在所有 URL 重写发生后,因此如果您的规则基于物理文件路径而不是可见路径,这是进行授权的最准确位置。

此外,您所做的任何通用 AuthorizeRequest 级别的工作都将受到 ImageResizer 的尊重,因为它在 PostAuthorizeRequest 之前不会激活。

ImageResizer 事件:http: //imageresizing.net/docs/events

于 2012-07-30T15:14:42.353 回答