当咱们网站开发到这里的时候,咱们虽然已经实现了用户登陆信息,用户不通过登陆信息,好比: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