麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 擴展 > MVC > 正文

MVC使用Controller代替Filter完成登錄驗證(Session校驗)學習筆記5

2024-09-06 20:44:35
字體:
來源:轉載
供稿:網友

之前的學習中,在對Session校驗完成登錄驗證時,通常使用Filter來處理,方法類似與前文的錯誤日志過濾,即新建Filter類繼承ActionFilterAttribute類,重寫OnActionExecuting方法,之后直接在需要驗證的Action前加上Filter標記即可。

1. 新建登陸校驗類CheckLoginAttribute

using System.Web.Mvc;namespace PMS.WebApp.Models{  public class CheckLoginAttribute:ActionFilterAttribute  {    public override void OnActionExecuting(ActionExecutingContext filterContext)    {      base.OnActionExecuting(filterContext);      if (filterContext.HttpContext.Session == null || filterContext.HttpContext.Session["user"] == null)      {        filterContext.HttpContext.Response.Redirect("/User/Login");      }    }  }}

2. 在需要校驗的Action增加標記以完成校驗

using System.Web.Mvc;using PMS.IBLL;using PMS.WebApp.Models;namespace PMS.WebApp.Controllers{  public class UserController : Controller  {    //    // GET: /User/    //private IUserService _userService;    //private IUserService UserService    //{    //  get { return _userService ?? (_userService = new UserService()); }    //  set { _userService = value; }    //}    private IUserService UserService { get; set; }    [CheckLogin]    public ActionResult Index()    {      return Content("OK");    }  }}

注意:不要在RegisterGlobalFilters方法中注冊校驗類,否則則會相當于給所有Action都添加了校驗

這種方法使用起來需要在每個Action方法前添加過濾標簽,且效率并不十分高,我們的項目中使用的是一種更為簡單高效的方法:使用Controller進行登錄驗證

1.  新建一個用于驗證的Controller父類,并在其內重寫OnActionExecuting方法完成登陸校驗:

using System.Web.Mvc;namespace PMS.WebApp.Controllers{  public class FilterController : Controller  {    protected override void OnActionExecuting(ActionExecutingContext filterContext)    {      base.OnActionExecuting(filterContext);      if (Session["user"] == null)      {        //filterContext.HttpContext.Response.Redirect("/User/Login");        filterContext.Result = Redirect("/User/Login");      }    }  }}

在Controller校驗類的OnActionExecuting方法中,有如下代碼

//filterContext.HttpContext.Response.Redirect("/User/Login");
filterContext.Result = Redirect("/User/Login");      

我們使用后者而放棄前者的原因是,ASP.NET MVC中規定,Action必須返回ActionResult,如果使用前者,在完成跳轉前會先進入到請求的頁面,這樣不符合我們使用過濾器的初衷。

2.  然后使需要校驗的Controller繼承于我們定義的校驗Controller即可完成全局登錄校驗操作:

using System.Web.Mvc;using PMS.IBLL;namespace PMS.WebApp.Controllers{  public class UserController : FilterController//Controller  {    //    // GET: /User/    //private IUserService _userService;    //private IUserService UserService    //{    //  get { return _userService ?? (_userService = new UserService()); }    //  set { _userService = value; }    //}    private IUserService UserService { get; set; }    //[CheckLogin]    public ActionResult Index()    {      return Content("OK");    }  }}            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产91丝袜在线熟 | 免费a级网站 | 久久草在线视频 | 男女做性免费网站 | 久久久久久中文字幕 | 欧美日韩免费一区二区三区 | 深夜毛片免费看 | 久久99国产精品久久99 | 麻豆蜜桃在线观看 | 亚洲一区二区免费视频 | 久久久中文 | 日本xxxx色视频在线观看免费, | 黄网站色成年大片免费高 | 免费a级毛片大学生免费观看 | 免费国产在线视频 | 欧美视频一区二区三区四区 | 中国女警察一级毛片视频 | 色柚视频网站ww色 | 91九色精品 | 国产精品一区久久久久 | 久久噜噜噜精品国产亚洲综合 | 鲁丝一区二区二区四区 | 欧美片一区二区 | 国产精品一区二区视频 | 香蕉国产片 | 国产在线播放一区二区 | 最近日本电影hd免费观看 | 久夜tv| 看国产精品 | 国产成人综合在线观看 | 精品国产91久久久 | 国产免费网站视频 | 国产亚洲精品影达达兔 | 中国老女人一级毛片视频 | 视屏一区 | 国产1区在线观看 | 欧美日韩亚洲视频 | 免费一级特黄做受大片 | 欧美一级片在线 | 国产一区二区三区在线免费观看 | 鲁人人人鲁人人鲁精品 |