[英]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.