您的位置:首页 > 编程语言 > ASP

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

2019-04-08 09:23 309 查看

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

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

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

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

人手一份

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

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

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

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

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

[code] 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.判断用户是否通过身份验证并且获取用户名称、没有通过验证、则转到登录页面

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

[code]    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判断体。

[code]  [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>节点中添加如下标签

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

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐