當咱們網站開發到這裏的時候,咱們雖然已經實現了用戶登陸信息,用戶不通過登陸信息,好比: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