Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在ASP.NET MVC中保护图像(带自定义RouteHandler)_Asp.net Mvc_Session_Iroutehandler_Custom Routes - Fatal编程技术网

Asp.net mvc 在ASP.NET MVC中保护图像(带自定义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。我的RouteHandler只需采用一个新的路由(graphics/{filename}),并查找真正的文件路径,设置mime类型,然后提供服务。那很好。()

接下来我要做的是在我的自定义处理程序中检查一个会话变量,我将在前面设置该变量,以确保试图查看图像的人有权这样做

基本上,他们会传递一个登录名(输入代码),这将设置一个会话变量,我将在自定义RouteHandler中查找该变量

我的问题是,我似乎无法从自定义RouteHandler中获取会话数据


最后,我的问题是:如何在控制器中设置数据,并在后续请求中从自定义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获取它,正如我在回答的后半部分所指出的。