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
C# 在ASP.NET MVC的ActionMethods中使用相同的RedirectToAction方法_C#_Asp.net Mvc - Fatal编程技术网

C# 在ASP.NET MVC的ActionMethods中使用相同的RedirectToAction方法

C# 在ASP.NET MVC的ActionMethods中使用相同的RedirectToAction方法,c#,asp.net-mvc,C#,Asp.net Mvc,我基本上想检查会话对于我的应用程序中的每个GET和POST请求是否仍然有效,但是,我真的不想在每个操作方法中复制和粘贴相同的代码,我想使用一个基本控制器,这样我就可以继承用法或一个静态帮助器控制器类(如果可以的话??)。这两种方法中有哪一种是最好的(甚至是正确的)方法 代码示例 [HttpGet] [ValidateInput(false)] public ActionResult SimpleSearch() { // I want to run

我基本上想检查会话对于我的应用程序中的每个GET和POST请求是否仍然有效,但是,我真的不想在每个操作方法中复制和粘贴相同的代码,我想使用一个基本控制器,这样我就可以继承用法或一个静态帮助器控制器类(如果可以的话??)。这两种方法中有哪一种是最好的(甚至是正确的)方法

代码示例

    [HttpGet]
    [ValidateInput(false)]
    public ActionResult SimpleSearch()
    {
        // I want to run this code of every ActionResult for a GET AND POST
        if (!SessionStaticClass.IsUserLoggedIn())
        {
            return RedirectToAction("Login, Login");
        }
    }

谢谢

您可以使用操作过滤器:

public class NotLoggedInFilter : FilterAttribute, IResultFilter
{
    public void OnResultExecuting(ResultExecutingContext filterContext)
    {
         if (!SessionStaticClass.IsUserLoggedIn())
         {
             filterContext.Result = new RedirectToAction("Login, Login");
         }
    }
}
然后,您可以使用该属性装饰控制器或操作,甚至通过将其添加到全局筛选器集合,使其对所有操作运行

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
{    
    filters.Add(new NotLoggedInFilter());
}

但是,您可能希望将身份验证过滤器作为处理用户身份验证的一种方式,而不是使用
SessionStaticClass
类。可以找到MVC中过滤器类型的良好概述。

您使用的是哪个版本的MVC?5-我相信最新版本如果您使用会话存储登录信息,那么您的操作是非常错误的,并且使您的站点非常不安全……别担心,我不是,我的会话中没有用户名或密码,宝贝!