Asp.net MVC过滤器的使用

当咱们网站开发到这里的时候,咱们虽然已经实现了用户登陆信息,用户不通过登陆信息,好比:http://localhost:6941/UserInfo/Index若是我这样访问的话,他是能够进行操做的,因此咱们就须要解决这样的问题.session

这时候咱们想到了Session,咱们能够判断session是否为空,若是为空的话直接跳转到登陆页面,负责才能进行操做。这样当咱们在登陆的时候咱们就已经给session赋值ide

1 if (UserName != null)
2 {
3     Session["UserInfo"] = userInfo;
4 }

首先想到了全局过滤器Filter,全部的控制器在执行以前都要通过全局过滤器过滤,可是这里有一个缺点就是登陆的页面也会进过全局过滤器的过滤,因此这里使用全局过滤器不太好,这时候咱们发现咱们的控制器都继承自Controller,那么咱们就想咱们是否是须要从新一个基类继承自Controller,而让其余的控制其类继承自咱们创建的基类,这样咱们就新建一个基类BaseController类,而后让须要检测用户登陆的页面继承自这个基类.网站

namespace LYZJ.UserLimitMVC.UI.Portal.Controllers
{
    public class BaseController : Controller
    {
        //当前登陆的用户属性
        public BaseUser CurrentUserInfo { get; set; }
        //从新基类在Action执行以前的事情,在Action执行以前的一个方法
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);
            //获得用户登陆的信息
            CurrentUserInfo = Session["UserInfo"] as BaseUser;
            //判断用户是否为空
            if (CurrentUserInfo == null)
            {
                Response.Redirect("/Login/Index");
            }
        }
    }
}

最后让咱们须要检测用户登陆的控制其都继承自这个基类便可,这样咱们就解决了这个需求,继承代码以下:spa

public class UserInfoController : BaseController
相关文章
相关标签/搜索