ASP.NET MVC 身份验证-利用cookie记录登录用户

说明:原理性的东西在后续的章节会涉及、此处讲述使用说明。

一、关于Cookie和Session此处简单介绍一下、作为初学者可以先了解以下两点

1.Cookie是存于客户端的(即用户电脑)、Session是存于服务端的。

2.Cookie数据所有的浏览器端共享、Session数据由服务器开辟内存保存、每一个浏览器都有一个唯一的SessionID

人手一份

二、首先需要介绍一下FormsAuthentication密封类。

1.用户登录成功后、需要保存用户信息到Cookie(本地)可以调用如下方法、下次调用就会判断是否有Cookie信息

如果Cookie信息没有过期可以直接跳过登录。

该类有一个方法SetAuthCookie(string userName, bool createPersistentCookie)

注意:该方法如果被调用多次、则保存最后一个设置的Cookie

 public ActionResult AdminLogin(SysAdmin objAdmin)
        {
            string adminName = new BLL.SysAdminManager().AdminLogin(objAdmin);
            if (adminName != null)
            {
                FormsAuthentication.SetAuthCookie(adminName, true);
                TempData["adminName"] = adminName;
                return RedirectToAction("GetAllStuList", "Student");
            }
            else
            {
                ViewBag.Info = "用户或密码错误";
            }
            return View("AdminLogin");
        }

2.判断用户是否通过身份验证并且获取用户名称、没有通过验证、则转到登录页面

已经通过验证、则不需要登录

    public ActionResult Index()
        {

            if (this.User.Identity.IsAuthenticated)
            {
                string adminName = this.User.Identity.Name;          //获取写入的adminName
                ViewBag.adminName = adminName
                return View("StudentManage");
            }
            else
            {
                return RedirectToAction("Index","SysAdmin");
            }
           
        }

3.控制器或控制器方法如果添加了 [Authorize]特性、则通过路由访问之前需要验证是否已经通过身份验证、作用类似于第二点if判断体。

  [Authorize]
        public ActionResult Index()
        {
            string adminName = this.User.Identity.Name;  //获取写入的adminName

            ViewBag.adminName = adminName;
            return View("StudentManage");

        }

如果浏览器没有登录成功也、就是执行了     FormsAuthentication.SetAuthCookie(adminName, true)方法、那么url访问该路由就会失败。会出现一个如下界面

如果想要浏览器访问url失败后跳转到指定的页面、可以在Web.config的  <system.web>节点中添加如下标签

  <authentication mode="Forms">
      <forms loginUrl="~/SysAdmin/Index" timeout="2880"  />
    </authentication>

访问失败就会跳转到指定的页面

猜你喜欢

转载自blog.csdn.net/qq_35574190/article/details/89080422
今日推荐