原文:https://www.cnblogs.com/kyo-lynn/p/3418577.html

原文:https://www.cnblogs.com/fish-li/archive/2012/04/15/2450571.html

注意1:

  1、需要在web.config中添加节点,

  2、需要引用命名空间:System.Web.Security

注意2:

注意 票据时间 和 cookie时间
 比如:
  cookie时间为5秒,票据时间为5秒,用户在5秒内刷新,登录时间会一直延续下去,如果超过5秒,登录状态消失
  cookie时间为5秒,票据时间为5000秒,只要登录时间超过5秒,不管用户是否刷新页面,登录状态消失

1、需要在Web.config中添加节点,添加在system.web下。

<authentication mode="Forms"></authentication>

        //获取认证信息public ActionResult Index(){if (Request.IsAuthenticated){//获取认证信息//Request.Cookies[FormsAuthentication.FormsCookieName] != null//Request.IsAuthenticatedstring user = User.Identity.Name;//Request.RequestContext.HttpContext.User.Identity.Namevar cookie = Request.Cookies[FormsAuthentication.FormsCookieName];var ticket = FormsAuthentication.Decrypt(cookie.Value);string data = ticket.UserData;return Content($"用户已登录 <br> user:{user} <br> data:{data}");}return Content("用户未登录");}

        //登录1public ActionResult Login1(){FormsAuthentication.SetAuthCookie("name2", true);return Content("登录成功,name: name2");}//登录2public ActionResult Login2(){/*判断是否登录的唯一标志,就是 看看 有没有名称为FormsAuthentication.FormsCookieName的cookie,有就是登录了。按照asp.net forms验证的设计思想,如果要将自定义数据放到Cookie里面,首先应该定制一个FormsAuthenticationTicket,将自定义数据放到其UserData里,然后用FormsAuthentication.Encrypt加密这个Ticket,最后用new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket)生成一个Cookie,加入到Response.Cookies中, 作为登录标注。并不是直接修改 HttpCookie的Value或者Values。                 *///创建认证信息 TicketFormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, "name1", DateTime.Now, DateTime.Now.AddSeconds(5), false, "value1");//票据加密string encryptedTicket = FormsAuthentication.Encrypt(ticket);//写入到cookievar cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);System.Web.HttpContext.Current.Response.SetCookie(cookie);return Content($"cookie <br> name:{cookie.Name} <br> value:{cookie.Value}");}

        //退出public ActionResult Logout(){FormsAuthentication.SignOut();return Content("退出成功");}

测试1:用户在5秒内刷新页面,登录状态会一直持续下去

测试2:不管用户怎么刷新,超过5秒后,就会退出登录状态

测试3:用户在5秒内刷新页面,登录状态会一直持续下去。超过3秒刷新,用户登录状态消失

测试1 和 测试3 的区别:

  测试1:票据时间 和 cookie时间 都为5秒

  测试3:票据时间为3秒,cookie时间为5秒

  结论:测试3,就算用户在4秒的时候刷新页面,但那个时间用户从游览器提交的票据,在后台判断是已经失效的,因为票据的过期时间为3秒。

测试1 和 测试2 的区别:

  测试1:票据时间 和 cookie时间 都为5秒

  测试2:票据时间为5000秒,cookie时间为5秒

  结论:测试2,用户在5秒内刷新页面,游览器有带cookie往服务端请求。

     如果时间超过5秒,游览器请求的时候,就不带cookie。

     这个时候,虽然票据没有过期,但是与票据关联的cookie(应该是票据本身)根本就没有被提交到服务端,

     所以还是为未登陆状态。

过期时间分为两块:

  1、cookie的过期时间

    cookie的过期时间 决定了 游览器是否会把票据(票据本身就是存在cookie里面的)提交到后台

  2、票据的过期时间

    后台判断过期时间的依据,这个才是实实在在的过期时间。

    如果票据过期了,就算伪造cookie上传票据,也没法通过后台的验证。

记录一下一些自己的理解

转载于:https://www.cnblogs.com/guxingy/p/10643785.html

C# ASP.NET Forms身份认证相关推荐

  1. 细说ASP.NET Forms身份认证

    细说ASP.NET Forms身份认证 阅读目录 开始 ASP.NET身份认证基础 ASP.NET身份认证过程 如何实现登录与注销 保护受限制的页面 登录页不能正常显示的问题 认识Forms身份认证 ...

  2. [转载]细说ASP.NET Windows身份认证

    细说ASP.NET Windows身份认证 阅读目录 开始 认识ASP.NET Windows身份认证 访问 Active Directory 在ASP.NET中访问Active Directory ...

  3. [转]IE11下Forms身份认证无法保存Cookie的问题

    本文转自:http://www.cnblogs.com/jaxu/p/3698377.html ASP.NET中使用Forms身份认证常见的做法如下: 1. 网站根目录下的Web.config添加au ...

  4. 实战解读ASP.NET Core身份认证

    长话短说:上文我们聊了 ASP.NET Core 基于声明的访问控制到底是什么鬼? 今天我们乘胜追击:聊一聊ASP.NET Core 中的身份验证. 身份验证是确定用户身份的过程.授权是确定用户是否有 ...

  5. 实现基于 ASP.NET Forms 身份验证的跨子域单点登录

    对于跨应用程序的 ASP.NET Forms 身份验证,相信大家应该都不陌生,几年前很多文章都介绍了如何实现,比如 MSDN 的 跨应用程序进行 Forms 身份验证,唐朝程序员 的 ASP.NET站 ...

  6. ASP.NET MVC身份认证与授权

    文章目录 一.引言 1.身份认证的含义 2.身份认证与Session 基于Session保存用户状态 不足之处 二.ASP.NET身份验证 Forms验证 FormsAuthentication类 验 ...

  7. ASP.NET MVC --- 身份认证与授权

    身份认证的含义:例如在现在浏览的某宝电商网站中会经常遇到的情况,想要将某件商品加入到购物车,点击"加入购物车"之后弹出的却是登录界面.这个就是所谓的请求的身份认证 身份认证与Ses ...

  8. [转][.NET 基于角色安全性验证] 之三:ASP.NET Forms 身份验证

    在开发过程中,我们需要做的事情包括: 1. 在 web.config 中设置 Forms 身份验证相关参数. 2. 创建登录页. 登录页中的操作包括: 1. 验证用户名和密码是否正确. 2. 创建身份 ...

  9. asp.net form身份认证不定时认证失败的问题 排查

    1.网站出现form认证不定时认证失败.登陆过后 每隔一会儿就需要重新登陆.首先检查的是form身份认证票据设置的时间(正常) 然后检查加密后的身份认证信息写入的cookie的失效时间(正常) 2.这 ...

最新文章

  1. “静态常量”与“ #define”与“枚举”
  2. 禁毒学、油画、乌尔都语……字节跳动程序员的专业有多奇特丨技术同学大数据报告...
  3. Andrew NG 机器学习编程作业5 Octave
  4. vue路由跳转 返回上一级 this.$router.go(-1) 和返回到指定页面this.$router.push('/home')...
  5. 【渝粤教育】电大中专电商运营实操 (8)作业 题库
  6. Symbol Mc1000 快捷键 的 设置 事件 开发
  7. MS SQL Server 常用操作
  8. 5 操作系统第二章 进程管理 线程介绍
  9. 云服务器 ECS > 标签与资源 > 标签 > 标签概述
  10. php 瓶颈,使用XHProf查找PHP性能瓶颈
  11. 旅游信息管理后台(SSM后台管理系统)
  12. CTF ics-04
  13. Request Headers 和Response Headers——请求头和响应头
  14. 2017年山东省第八届ACM程序设计竞赛总结
  15. ubuntu petalinux 2018 安装操作说明
  16. iframe X-Frame-Options
  17. 内存动态分区分配算法
  18. 考研必备100个网站
  19. C++类与对象入门实践(日期类的实现)
  20. 【51单片机 】定时器的初始值计算 详解

热门文章

  1. boost::hana::symmetric_difference用法的测试程序
  2. boost::endian::detail::is_scoped_enum用法的测试程序
  3. boost::detail模块实现utf8编码的测试程序的测试程序
  4. VTK:可视化算法之ColorIsosurface
  5. VTK:图片之ImageVariance3D
  6. OpenCV内置OpenCV的实例(附完整代码)
  7. const关键字的作用?
  8. QT的QAxBase类的使用
  9. OpenCv——merge()函数数据合并
  10. 基于plc计算机控制系统,基于PLC的工业控制系统特点的分析