当ASP.NET Forms验证方式遭遇苹果IOS

一、问题出现

  我在用ASP.NET MVC4做微信开发的时候,用Forms验证方式做为authentication。

  一般都是在web.config加:

  <authentication mode="Forms" >

  <forms loginUrl="~/Account/Login" name="webcookies"  slidingExpiration="true" timeout="30" />

  </authentication>

  然后用户登录成功后就设置Cookies,代码如下:


public static void SetTicket(HttpResponseBase response, bool remeberMe, int version, string identity, string displayName)

{

FormsAuthentication.SetAuthCookie(identity, remeberMe);

string userData = displayName;

var authTicket = new FormsAuthenticationTicket(

version,

identity,

DateTime.Now,

DateTime.Now.AddDays(remeberMe ? 30 : 1),

remeberMe,

userData);

string encrytedTicket = FormsAuthentication.Encrypt(authTicket);

HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName,

encrytedTicket);

response.Cookies.Add(authCookie);

}

  我这里用FormsAuthenticationTicket.Version存储用户角色ID。

  一开始还为自己的机智和精巧的设计洋洋得意,而且在安卓手机上运行完全没有问题。但是在IOS上,不管我Version设置成什么值,它的值始终都是2。

  根据msdn的解释:如果 FormsAuthenticationTicket 是使用不提供 version 参数的构造函数创建的,则 Version 属性返回 2;否则,Version 属性返回提供给FormsAuthenticationTicket 构造函数的值。

  地址:http://technet.microsoft.com/zh-cn/magazine/system.web.security.formsauthenticationticket.version(VS.110).aspx

  我明明已经使用了提供 version 参数的构造函数创建的,但是在IOS上就是不好使。

  找了很多资料都没有得到一个很好的解释,希望博客园的园们能帮我解释一下这个问题呀。

  后来看到微软的那个页面最下面:支持的平台:

  Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(不支持服务器核心角色), Windows Server 2008 R2(支持带 SP1 或更高版本的服务器核心角色;不支持 Itanium)

  我也就释怀了。

  不管怎么着,困扰我许久的问题终于找到问题所在了,谨以此文告诫后来者。

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2025-01-25 00:37:38

当ASP.NET Forms验证方式遭遇苹果IOS的相关文章

ASP.NET Forms验证实现子域名(SubDomain)共享登陆下的缺陷

一.什么是单点登录 单点登录就是在多个web应用程序中,实现统一登录方式,一但登录了某web应 用程序,其它相关联的web应用程序都无需再次登录,一个地方退出,所有相关联的 web应用程序都退出. 二.通过利用ASP.NET Forms验证模式可以实现子域名(SubDomain)共享登陆下 的缺陷 要利用Asp.NET Form验证模式实现同一主域下不同子域名共享登陆状态需要进 行以下配置 配置Web.config 1.把Asp.net的认证模式改为Forms认证模式,domain 要等于你的应

ASP.NET Forms验证的安全性问题研究为什么加密代码需要配置为服务

申明:这个帖子不是要你去干啥坏事,就是提醒一下你可能会遇到的安全性问题. ASP.Net提供了内置的登录验证,最为常用的就是Forms验证.讲解如何配置的文章非常多,这里就不再讲如何配置使用这个验证的方式了.下面讲讲其在安全性上存在的一些被忽视的问题.其实它本身没有问题,而使用的方式上会附带出来一些问题. 本文将分三部分讲实际应用中将会遇到的安全性问题,并且加以研究,并尝试提出解决方案. 一.简单的Forms被破解危机二.垂直划分站点的Forms被破解危机三.危机将带来什么后果 一.简单的For

asp.net身份验证方式介绍_实用技巧

windows身份验证: IIS根据应用程序的设置执行身份验证.要使用这种验证方式,在IIS中必须禁用匿名访问. Forms验证:用Cookie来保存用户凭证,并将 未经身份验证的用户重定向到自定义的登录页. Passport验证:通过Microsoft的集中身份验证服务执行的,他为成员站点提供单独登录 和核心配置文件服务. 一. 配置windows身份验证 1)配置IIS设置 2)设置Web.config <system.web> <authentication mode = &quo

艾伟_转载:ASP.NET Forms验证的安全性问题研究——为什么加密代码需要配置为服务

申明:这个帖子不是要你去干啥坏事,就是提醒一下你可能会遇到的安全性问题. ASP.Net提供了内置的登录验证,最为常用的就是Forms验证.讲解如何配置的文章非常多,这里就不再讲如何配置使用这个验证的方式了.下面讲讲其在安全性上存在的一些被忽视的问题.其实它本身没有问题,而使用的方式上会附带出来一些问题. 本文将分三部分讲实际应用中将会遇到的安全性问题,并且加以研究,并尝试提出解决方案. 一.简单的Forms被破解危机二.垂直划分站点的Forms被破解危机三.危机将带来什么后果    一.简单的

关于asp.net forms验证的问题

问题描述 使用asp.netforms验证方式进行用户登录验证.之前一直都没有问题的,但最近遇到一个很奇怪的问题.不知道是哪里的设置问题,该如何解决.先说问题现象WEB应用程序在测试时,都没有问题,但发布到服务器上以后客户端无法使用IE进行登录,用IE登录后,页面会返回到刷新后的登录页面,取消IE的兼容模式后再测试,就发现问题出在了验证登录后的URL地址上,地址栏里会出现一段代码如下(异常部分用红色标注了):http://www.abc.com/(alkjdfw**aj09jaolakjow90

ASP.NET MVC 验证方式(1)

实现一个简单的验证(C#) 本部分主要目的是说明如何在ASP.NET MVC应用程序中实现验证.例如,将了解如何验证一个表单提交时必填内容的合法性.了解如何应用model state和验证相关的HTML helpers. 理解Model State 你使用model state,更准确点说是使用model state 字典去表示验证错误.比如,列表一中的Create()方法,在产品类保存入库之前去验证产品类的属性. 把验证和数据逻辑加到控制类中是违反编程方法的,控制类中应该仅包含程序的流程逻辑.

一起谈.NET技术,ASP.NET MVC 验证方式(1)

实现一个简单的验证(C#) 本部分主要目的是说明如何在ASP.NET MVC应用程序中实现验证.例如,将了解如何验证一个表单提交时必填内容的合法性.了解如何应用model state和验证相关的HTML helpers. 理解Model State 你使用model state,更准确点说是使用model state 字典去表示验证错误.比如,列表一中的Create()方法,在产品类保存入库之前去验证产品类的属性. 把验证和数据逻辑加到控制类中是违反编程方法的,控制类中应该仅包含程序的流程逻辑.

使用ASP.Net Forms模式实现WebService身份验证

asp.net|web     在安全性要求不是很高的ASP.Net程序中,基于Forms的身份验证是经常使用的一种方式,而如果需要对WebService进行身份验证,最常用的可能是基于Soap 标头的自定义身份验证方式.如果对两者做一下比较的话,显然,基于Forms的验证方式更加方便易用,能否将Forms验证方式应用到WebService中去呢?     从理论上讲,使用基于Forms的方式对WebService进行身份验证是可行的,但是使用过程中会存在以下两个问题: 1.基于Forms的验证

Asp.net中基于Forms验证的角色验证授权

asp.net Asp.net中基于Forms验证的角色验证授权 Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活.Forms 验证方式对基于用户的验证授权提供了很好的支持,可以通过一个登录页面验证用户的身份,将此用户的身份发回到客户端的Cookie,之后此用户再访问这个web应用就会连同这个身份Cookie一起发送到服务端.服务端上的授权设置就可以根据不同目录对不同用户的访问授权进行控制了. 问