• .net MVC使用Session验证用户登录(转载)


     .net MVC使用Session验证用户登录

     

    用最简单的Session方式记录用户登录状态

    1.添加DefaultController控制器,重写OnActionExecuting方法,每次访问控制器前触发

    复制代码
        public class DefaultController : Controller
        {
            protected override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                base.OnActionExecuting(filterContext);
                var controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
    
                var userName = Session["UserName"] as String;
                if (String.IsNullOrEmpty(userName))
                {
                    //重定向至登录页面
                    filterContext.Result = RedirectToAction("Index", "Login", new { url = Request.RawUrl});
                    return;
                }
    
            }
        }
    复制代码

    2.登录控制器

    复制代码
        public class LoginController : Controller
        {
            // GET: Login
            public ActionResult Index(string ReturnUrl)
            {
                if (Session["UserName"] != null)
                {
                    return RedirectToAction("Index", "Home");
                }
                ViewBag.Url = ReturnUrl;
                return View();
            }
    
            [HttpPost]
            public ActionResult Index(string name, string password, string returnUrl)
            {
                /*
                    添加验证用户名密码代码
                */
                Session["UserName"] = name;
                if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/") && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\"))
                {
                    return Redirect(returnUrl);
                }
                else
                {
                    return RedirectToAction("Index", "Home");
                }
            }
    
            // POST: /Account/LogOff
            [HttpPost]
            public ActionResult LogOff()
            {
                Session["UserName"] = null;
                return RedirectToAction("Index", "Home");
            }
        }
    复制代码

    3.需要验证的控制器继承DefaultController

    复制代码
        public class HomeController : DefaultController
        {
            public ActionResult Index()
            {
                return View();
            }
        }
    复制代码

    这种方式适合比较小的项目
    优点:简单,易开发
    缺点:无法记录登录状态,而且Session方式容易丢失
    转载来源:https://www.cnblogs.com/pengdylan/p/6421440.html
  • 相关阅读:
    Deep Learning 15:RBM的学习
    [解惑]MHA基本原理
    里程碑--学会蝶泳
    orchestrator中的raft snapshot操作
    使用binlog恢复被删除的数据
    关于MySQL binlog二进制日志
    无锁加载配置
    go tool trace 浏览器空白页问题 trace shows blank page
    godoc的使用
    Error 1390: Prepared statement contains too many placeholders
  • 原文地址:https://www.cnblogs.com/hao-1234-1234/p/8776739.html
Copyright © 2020-2023  润新知