繁体   English   中英

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

[英]Using the same RedirectToAction method in ActionMethods in ASP.NET MVC

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

代码示例

    [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中的过滤器类型的概述。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM