C# 在ASP.NET MVC的ActionMethods中使用相同的RedirectToAction方法
我基本上想检查会话对于我的应用程序中的每个GET和POST请求是否仍然有效,但是,我真的不想在每个操作方法中复制和粘贴相同的代码,我想使用一个基本控制器,这样我就可以继承用法或一个静态帮助器控制器类(如果可以的话??)。这两种方法中有哪一种是最好的(甚至是正确的)方法 代码示例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
[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-我相信最新版本如果您使用会话存储登录信息,那么您的操作是非常错误的,并且使您的站点非常不安全……别担心,我不是,我的会话中没有用户名或密码,宝贝!