如何手动设置AuthCookie

ASP.NET中实现可以自己实现FormsAuthentication.SetAuthCookie方法,控制更为灵活

 /// <summary>
/// 存用户信息到cookie
/// </summary>
/// <param name="userName"></param>
/// <param name="isPersistent">cookie是否是持久的</param>
protected static void LoginSystem(string userName, bool isPersistent)
{
DateTime issueDateTime=DateTime.Now;
DateTime expiredDateTime=issueDateTime.AddMinutes(); FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(,
userName,
issueDateTime,
expiredDateTime,
isPersistent,
userName);
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
System.Web.HttpCookie authCookie = new System.Web.HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket); if (isPersistent)
{
authCookie.Expires = expiredDateTime;
} System.Web.HttpContext.Current.Response.Cookies.Add(authCookie);
}

我们知道默认情况下Forms认证的Cookie名称是".ASPXAUTH",其实可以在ASP.NET项目的Web.config文件中自定义这个Cookie的名称,方法就是设置forms节点的name属性,如下所示

<authentication mode="Forms">
<forms name="SSOServiceAuth">
<!--设置站点Forms认证Cookie的名称为SSOServiceAuth-->
</forms>
</authentication>

如何删除客户端浏览器上的Cookie

这里顺便说一下ASP.NET删除Cookie的方法,很多朋友在ASP.NET中向客户端浏览器添加了Cookie后,却不知道怎么在ASP.NET服务器端删除Cookie,大家只要记住一点不管是存储在客户端硬盘上的持久化Cookie还是存储于客户端内存中的非持久化Cookie,只要Cookie的过期时间(Cookie.Expires)小于或等于当前客户端操作系统的时间,Cookie马上就会被客户端浏览器删除掉,所以我们只需要在ASP.NET服务端设置你要删除的Cookie的过期时间(Cookie.Expires)小于客户端操作系统的当前时间就行了,为了保险起见我们可以设置要删除Cookie的过期时间(Cookie.Expires)为DateTime.MinValue.AddSeconds(1),这样肯定是小于客户端操作系统时间的,Cookie会被客户端浏览器立刻删除掉。

HttpCookie abandonCookie = Request.Cookies["MyCookie"];//获取要删除的Cookie
abandonCookie.Expires = DateTime.MinValue.AddSeconds();//设置要删除的Cookie的过期时间(Expires)为DateTime.MinValue加1秒,这样该Cookie被放入Response发送到客户端浏览器后,肯定小于客户端的操作系统时间,所以会被客户端浏览器立刻删除掉 Response.Cookies.Add(abandonCookie);//将设置好过期时间(Expires)的Cookie放入Response发送回客户端浏览器

自己实现FormsAuthentication.SetAuthCookie方法,怎样在ASP.NET服务端代码中删除客户端Cookie的更多相关文章

  1. FormsAuthentication.SetAuthCookie 方法登录

    FormsAuthentication.SetAuthCookie 方法,登录的原理. FormsAuthentication.SetAuthCookie 方法登录的过期时间. 登录相关阅读 asp. ...

  2. android如何与asp.net服务端共享session

    近期需要实现一个功能,就是需要通过发送短信进行注册,现在想把短信验证码放到服务器的session值中,当客户端收到短信并提交短信码时由asp.net服务端进行判断,那么如何共享这个session那么需 ...

  3. Asp.Net_ 服务端向客户端写JavaScript脚本

    在Asp.net 服务端处理脚本,一般都用 ClientScriptManager ,即web窗体服务端的this.ClientScript.该对象比较常用的方法: 1.RegisterArrayDe ...

  4. 在ASP.NET Core 2.x中获取客户端IP地址

    一.前言 大家也知道服务端请求时我们获取的IP地址是包含在请求头中,因此这也大大便利了IP的获取. 在ASP.NET中,可以通过以下方式获取客户端的IP地址. HttpContext.Current. ...

  5. 如何通过JavaScript构建Asp.net服务端控件

    摘要 虽然ASP.NET的服务器控件一直被大家所诟病,但是用户控件(ACSX)在某些场景下还是非常有用的. 在一些极特珠的情况下,我们会使用JavaScript动态的构建页面中的控件,但假设遇到了我要 ...

  6. ASP.NET 服务端接收Multipart/form-data文件

    在网络编程过程中需要向服务器上传文件. Multipart/form-data是上传文件的一种方式. /// <summary> /// 上传工程文件 /// </summary&g ...

  7. FormsAuthentication.SetAuthCookie

    这两天在研究 Forms 进行用户验证, 它本身没有什么上msdn上查一下就知道怎么个搞法了! 不过我在测试的时候发现也会产生 了一些疑问! 1. 什么我在web.config 的 authentic ...

  8. ios中mvc的FormsAuthentication.SetAuthCookie(cookieUserName, false)失败

    如果楼主使用.net开发,要注意FormsAuthentication.SetAuthCookie 方法的使用会导致ios出现该问题.因为这个方法在ios设备上是把票据加入到url中,导致url和你的 ...

  9. 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq

    常量,字段,构造方法   常量 1.什么是常量 ​ 常量是值从不变化的符号,在编译之前值就必须确定.编译后,常量值会保存到程序集元数据中.所以,常量必须是编译器识别的基元类型的常量,如:Boolean ...

随机推荐

  1. [LeetCode]题解(python):034-Search for a Range

    题目来源 https://leetcode.com/problems/search-for-a-range/ Given a sorted array of integers, find the st ...

  2. php创建网站问题

    网站在本地浏览的时候链接点击都提示The requested URL was not found on this server. 本地装的wamp,apache和php.ini都是好的 最后更改: 在 ...

  3. php 或js 常用的正则表达式

    1.    平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用:2.    "^\d+$" //非负整数(正整数 + 0)3.    "^[0-9 ...

  4. 新增WiFi真机同步与实时预览功能 简化真机调试步骤

    APICloud工具插件为开发者提供iOS和Android平台真机同步调试功能,不仅可以通过USB方式进行APP真机同步功能,更新增WiFi真机同步和WiFi真机实时预览两大功能,方便开发者在开发过程 ...

  5. activity传值到fragment

    1,初始化fragment时候: @Override public void onAttach(Activity activity) { /** 注册广播 */  initBroadcast(); s ...

  6. 内存映射文件mmap

    1.  mmap mmap可以把磁盘文件的一部分直接映射到内存,这样文件中的位置直接就有对应的内存地址,对文件的读写可以直接用指针而不需要read/write函数.使用内存映像文件的另一个优点是可以共 ...

  7. pscp

    http://www.physics.rutgers.edu/~matilsky/documents/pscp.htm

  8. Permissions 0664 for '/home/root/.ssh/id_rsa' are too open.

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY @ @@@ ...

  9. bash变量操作

    1.条件变量替换: Bash Shell可以进行变量的条件替换,既只有某种条件发生时才进行替换,替换 条件放在{}中. (1) ${value:-word} 当变量未定义或者值为空时,返回值为word ...

  10. Starting MySQL...The server quit without updating PID file

    修改mysql的配置文件(my.cnf)后,再启动mysqld的时候报错: # service mysqld start Starting MySQL...The server quit withou ...