Asp.net mvc 在ASP.NET MVC中保护图像(带自定义RouteHandler)
我为我想要保护的图像创建了一个自定义RouteHandler。我的RouteHandler只需采用一个新的路由(graphics/{filename}),并查找真正的文件路径,设置mime类型,然后提供服务。那很好。() 接下来我要做的是在我的自定义处理程序中检查一个会话变量,我将在前面设置该变量,以确保试图查看图像的人有权这样做 基本上,他们会传递一个登录名(输入代码),这将设置一个会话变量,我将在自定义RouteHandler中查找该变量 我的问题是,我似乎无法从自定义RouteHandler中获取会话数据Asp.net mvc 在ASP.NET MVC中保护图像(带自定义RouteHandler),asp.net-mvc,session,iroutehandler,custom-routes,Asp.net Mvc,Session,Iroutehandler,Custom Routes,我为我想要保护的图像创建了一个自定义RouteHandler。我的RouteHandler只需采用一个新的路由(graphics/{filename}),并查找真正的文件路径,设置mime类型,然后提供服务。那很好。() 接下来我要做的是在我的自定义处理程序中检查一个会话变量,我将在前面设置该变量,以确保试图查看图像的人有权这样做 基本上,他们会传递一个登录名(输入代码),这将设置一个会话变量,我将在自定义RouteHandler中查找该变量 我的问题是,我似乎无法从自定义RouteHandle
最后,我的问题是:如何在控制器中设置数据,并在后续请求中从自定义RouteHandler中获取数据?首先,从传入GetHttpHandler方法的RequestContext,您能否通过
RequestContext.HttpContext.Session
访问会话?我不确定,我可以看到它在默认情况下不起作用,因为它是如此之早的管道
如果没有,您可以通过将接口添加到处理程序中,轻松地将会话检查逻辑移动到处理程序中。首先,从传入GetHttpHandler方法的RequestContext,您不能通过
RequestContext.HttpContext.Session
访问会话吗?我不确定,我可以看到它在默认情况下不起作用,因为它是如此之早的管道
如果没有,您可以通过将接口添加到处理程序中,轻松地将会话检查逻辑移动到处理程序中。我将如何使用iRequiresessionState?我当前的设置是,我有一个实现IRoutHandler的类“ImageRouteHandler”,然后我只有一个提供我的映像的GetHttpHandler方法。@Brian ImageRouteHandler可以执行会话验证并返回一个403 not authorized,然后应用程序会捕获并处理它。或者你可以设置一个链式IHttpHandler,第一个检查会话,然后执行第二个,如果它认为可以的话RouteHandler@Brian您将无法从RouteHandler获得会话。从HttpHandler获取它,正如我在回答的后半部分所指出的。我将如何使用iRequiresessionState?我当前的设置是,我有一个实现IRoutHandler的类“ImageRouteHandler”,然后我只有一个提供我的映像的GetHttpHandler方法。@Brian ImageRouteHandler可以执行会话验证并返回一个403 not authorized,然后应用程序会捕获并处理它。或者你可以设置一个链式IHttpHandler,第一个检查会话,然后执行第二个,如果它认为可以的话RouteHandler@Brian您将无法从RouteHandler获得会话。从HttpHandler获取它,正如我在回答的后半部分所指出的。