[这是关于之前与计算机语言学家讨论的后续/清理问题,希望我已经指定了这个] ImageResizer可以抓取站点根目录之外的文件并为其提供服务(从而避免在网上提供未经修改的原件)吗? 或者这种情况的最佳做法是什么?
*如果原件存储在站点根目录之外,则会在线存储基于大小调整大小的图像(通过url auth / httpmodule等保护)然后让Imageresizer根据该图像动态调整大小等等吗?据我所见,我还没有找到一种方法来限制访问100%的文件夹,除非通过imageresizer请求。如果ImageResizer可以调整大小,用户可以访问它似乎更柔和。
*或者也许是一个解决方案,控制器提供原始图像,然后由ImageResizer处理。
主要目的:
能够完全自定义权限规则
能够以安全的方式提供服务(至少我学会了未经改动的用户上传的图像,不应该直接在siteroot下访问)。保留原件似乎是一种面向未来的战略。
能够动态调整ImageResizer的大小。
关于其他人如何实现这一点的任何意见也受到赞赏。
答案 0 :(得分:1)
要完成自定义授权逻辑,您需要处理HTTP管道中的AuthorizeRequest事件,并从头开始实现路径解析逻辑。您可以在Global.asax.cs中处理事件或通过实现IHttpModule来处理事件。
在AuthorizeRequest中,您可以在ImageResizer或任何其他HttpModule或HttpHandler看到它之前访问传入路径和查询字符串数据,决定用户今天是否应该能够访问它,并让请求继续或抛出HTTP 401错误。
我建议使用ILSpy查看System.Web.Security中的UrlAuthorizationModule。它只有几页代码,非常简单。