当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)

我也就释怀了。

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

这个FormsAuthenticationTicket.Version 属性是干嘛的,有人知道不?

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

时间: 2024-09-29 18:26:51

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

asp.net form 验证方式的使用(转载)

如何运用 Form 表单认证 ASP.NET 的安全认证,共有“Windows”“Form”“Passport”“None”四种验证模式.“Windows”与“None”没有起到保护的作用,不推荐使用:“Passport”我又没用过,唉……所以我只好讲讲“Form”认证了.我打算分三部分: 第一部分 —— 怎样实现From 认证: 第二部分 —— Form 认证的实战运用: 第三部分 —— 实现单点登录(Single Sign On) 第一部分 如何运用 Form 表单认证 一.     新建一

asp.net,java,jsp,安卓Android,苹果ios,php,vb.net,c#免费毕业课程设计源码共享网盘下载

百度网盘下载地址1:  http://pan.baidu.com/s/1o67fybC 百度网盘下载地址2: http://pan.baidu.com/s/1kTxckmF163网盘下载地址:http://home.163disk.com/shuangyulin file://E:\计算机设计参考!!!!!!!!!!!\资料 (4 folders, 0 files, 0 bytes, 641.25 MB in total.) ├─QQ254540457 (0 folders, 49 files,

Asp.net 身份验证方式?

[Forms 身份验证] 通过其可将没有通过身份验证的请求重定向到使用 HTTP 客户端重定向的 HTML 窗体的系统.用户提供凭据并提交该窗体.如果应用程序验证该请求,系统就会发出包含凭据或密钥的 Cookie 以重新获取该标识.后续的请求在请求标题中随 Cookie 一起发出,ASP.NET 事件处理程序会使用应用程序开发人员指定的任何验证方法去验证请求并给其授权. [Passport 身份验证] 由 Microsoft 提供的集中身份验证服务,用于为成员站点提供单一登录和核心配置服务. [

两系统用asp.net forms 身份验证方式实现跨域登录信息共享

1.两个系统的 web.config 都配置为 forms 验证方式( system.web —> authentication 节点) 2.在两个系统的Web.config里配置相同的 system.web —> machineKey 节点(节点生成:http://www.aspnetresources.com/tools/keycreator.aspx) 3.在两个系统的Web.config里配置相同的 system.web —> httpCookies 节点(<httpCoo

ASP.net的身份验证方式有哪些?

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

asp.net中使用基于角色role的Forms验证

http://www.cnblogs.com/yao/archive/2006/06/24/434783.html asp.net中使用基于角色role的Forms验证,大致经过几下四步:1.配置系统web.config system.web> <authentication mode="Forms" >  <forms name=".yaoCookies" loginUrl="/duan/Manage/login.aspx&quo

ASp.net中Froms验证方式

微软的ASP.NET提供了3种用户验证方式,即Windows验证.窗体(Forms)验证和护照验证(Passport)验证. 由于验证方式各不相同,因而这3种验证方式在使用范围上也有很大的不同, Windows验证方式只适用于放在受控环境里的网站; 也就是说,更适合于企业内网(Intranet).窗体认证特别适合布置于互联网的应用,而护照验证方式适合于跨站之间的应用,用户只用一个用户名和密码就可以访问任何成员站,并且在注销离开时,所有护照信息都会清除,你可以在公共场所放心的使用. 我们在编写We

.net 身份验证方式有哪些及原理

Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活. Windows: 使用IIS验证方式 Forms: 使用基于窗体的验证方式 Passport: 采用Passport cookie验证模式 None: 不采用任何验证方式 1.Forms Forms 验证方式对基于用户的验证授权提供了很好的支持,可以通过一个登录页面验证用户的身份,将此用户的身份发回到客户端的Cookie,之后此用户再访问这个 w

asp.net 登陆验证 Form表单验证的3种方式 FormsAuthentication.SetAuthCookie;FormsAuthentication.RedirectFromLoginPage;FormsAuthenticationTicket

我们在登陆成功后,使用下面的3种方法,都是同一个目的:创建身份验证票并将其附加到 Cookie, 当我们用Forms认证方式的时候,可以使用HttpContext.Current.User.Identity.IsAuthenticated  (或者也可以用 Request.IsAuthenticated ,这个实际上也是调用的是User.Identity.IsAuthenticated来验证)来判断是否登陆;而这个判断就是依赖于这个Cookie里的信息判断用户是否登陆. FormsAuthent