.net MVC使用Session验证用户登录(4)
用最简单的Session方式记录用户登录状态
1.添加DefaultController控制器,重写OnActionExecuting方法,每次访问控制器前触发
publicclassDefaultController:Controller { protectedoverridevoidOnActionExecuting(ActionExecutingContextfilterContext) { base.OnActionExecuting(filterContext); varcontrollerName=filterContext.ActionDescriptor.ControllerDescriptor.ControllerName; varuserName=Session["UserName"]asString; if(String.IsNullOrEmpty(userName)) { //重定向至登录页面 filterContext.Result=RedirectToAction("Index","Login",new{url=Request.RawUrl}); return; } } }
2.登录控制器
publicclassLoginController:Controller { //GET:Login publicActionResultIndex(stringReturnUrl) { if(Session["UserName"]!=null) { returnRedirectToAction("Index","Home"); } ViewBag.Url=ReturnUrl; returnView(); } [HttpPost] publicActionResultIndex(stringname,stringpassword,stringreturnUrl) { /* 添加验证用户名密码代码 */ Session["UserName"]=name; if(Url.IsLocalUrl(returnUrl)&&returnUrl.Length>1&&returnUrl.StartsWith("/")&&!returnUrl.StartsWith("//")&&!returnUrl.StartsWith("/\\")) { returnRedirect(returnUrl); } else { returnRedirectToAction("Index","Home"); } } //POST:/Account/LogOff [HttpPost] publicActionResultLogOff() { Session["UserName"]=null; returnRedirectToAction("Index","Home"); } }
3.需要验证的控制器继承DefaultController
publicclassHomeController:DefaultController { publicActionResultIndex() { returnView(); } }
这种方式适合比较小的项目
优点:简单,易开发
缺点:无法记录登录状态,而且Session方式容易丢失
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。