我为想要保护的图像创建了一个自定义RouteHandler。我的RouteHandler只需要一个新的路径(graphics / {filename})并查找真正的文件路径,设置mime类型并提供它。这很好。 (http://www.mikesdotnetting.com/Article/126/ASP.NET-MVC-Prevent-Image-Leeching-with-a-Custom-RouteHandler)
我接下来要做的是在我的自定义处理程序中检查我之前设置的会话变量,以确保尝试查看图像的人有权这样做。
基本上,他们会传递一个登录名(输入一个代码),这将设置一个我在自定义RouteHandler中寻找的会话变量。
我的问题是我似乎无法从自定义RouteHandler中获取会话数据。
最后,我的问题是:如何在控制器中设置数据并在后续请求中从自定义RouteHandler中将其提供给我?
答案 0 :(得分:1)
首先,从传递给GetHttpHandler方法的RequestContext,您是否可以通过requestContext.HttpContext.Session
访问会话?我不确定,我可以看到它默认不起作用,因为它是在管道中这么早。
如果没有,您可以通过向处理程序添加IRequiresSessionState接口,轻松地将会话检查逻辑移动到处理程序中。