C# MVC 用户登录状态判断

来源:https://www.cnblogs.com/cherryzhou/p/4978342.html

在Filters文件夹下添加一个类AuthenticationAttribute ,代码如下:

复制代码
// 登录认证特性
public class AuthenticationAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (filterContext.HttpContext.Session["username"] == null)
            filterContext.Result = new RedirectToRouteResult("Login", new RouteValueDictionary { { "from", Request.Url.ToString() } });
            
        base.OnActionExecuting(filterContext);
    }
}
复制代码

在Controller中的使用方法如下:

复制代码
public class HomeController : Controller 
{ 
    [Authentication] 
    public ActionResult Index()
    {
        return View();
    }
}
复制代码

如果你想针对整个MVC项目的所有Action都使用此过滤器,步骤如下(a,b选择一种就好):

a. 确保Global.asax.cs的Application_Start方法中包含如下红色行:

复制代码
public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
    }
}
复制代码

b. 在FilterConfig.cs文件中注册相应的特性过滤器:

复制代码
public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
        filters.Add(new AuthenticationAttribute());
    }
}
复制代码
 
原文地址:https://www.cnblogs.com/hao-1234-1234/p/8776840.html