当ASP.NET Forms验证方式遭遇苹果IOS
一、问题出现
我在用ASP.NET MVC4做微信开发的时候,用Forms验证方式做为authentication。
一般都是在web.config加:
<authentication mode="Forms" >
<forms loginUrl="~/Account/Login" name="webcookies" slidingExpiration="true" timeout="" />
</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 ? : ),
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的更多相关文章
- asp.net form 验证方式的使用(转载)
如何运用 Form 表单认证 ASP.NET 的安全认证,共有“Windows”“Form”“Passport”“None”四种验证模式.“Windows”与“None”没有起到保护的作用,不推荐使用 ...
- Asp.net 身份验证方式?
[Forms 身份验证] 通过其可将没有通过身份验证的请求重定向到使用 HTTP 客户端重定向的 HTML 窗体的系统.用户提供凭据并提交该窗体.如果应用程序验证该请求,系统就会发出包含凭据或密钥的 ...
- ASP.NET Forms验证
/// <summary> /// 执行用户登录操作 /// </summary> /// <param name="config">授权配置信 ...
- 两系统用asp.net forms 身份验证方式实现跨域登录信息共享
1.两个系统的 web.config 都配置为 forms 验证方式( system.web —> authentication 节点) 2.在两个系统的Web.config里配置相同的 sys ...
- asp.net中使用基于角色role的Forms验证
http://www.cnblogs.com/yao/archive/2006/06/24/434783.html asp.net中使用基于角色role的Forms验证,大致经过几下四步:1.配置系统 ...
- Asp.net中基于Forms验证的角色验证授权
Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活. Forms 验证方式对基于用户的验证授 ...
- ASp.net中Froms验证方式
微软的ASP.NET提供了3种用户验证方式,即Windows验证.窗体(Forms)验证和护照验证(Passport)验证. 由于验证方式各不相同,因而这3种验证方式在使用范围上也有很大的不同, Wi ...
- Asp.Net的Forms验证,解决Cookie和Seesion失效时间
网站开发中用户验证一般采用Asp.Net的Forms验证,验证票据存储到Cookie的方式. Session方式是将验证信息存储在内存中,如果你使用的虚拟主机给你分配很小的内存,实际上都是如此,那么s ...
- ASP.net的身份验证方式有哪些?
[转] ASP.net的身份验证方式有哪些?分别是什么原理? Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验 ...
随机推荐
- Elasticsearch同义词词汇单元过滤器
1 简单扩展 "jump,hop,leap" 搜索jump会检索出包含jump.hop或leap的词 1.1 扩展应用在索引阶段 1.2 扩展应用在查询阶段 1.3 对比 2 简单 ...
- Android动态添加和移除布局
package com.hyang.administrator.studentproject; import android.os.Bundle; import android.support.v7. ...
- vue components & `@import css` bug
vue components @import css not support css3 @import https://github.com/vuejs/vue-loader/issues/138#i ...
- table & colgroup
table & colgroup // <caption>版本信息</caption> table = ` <table class="versions ...
- WebIDE
1 1 1 WebIDE 是什么? WebIDE 是 一款在线集成开发环境( Integrated Development Environment ). 开发者只需要一个浏览器就可以编写代码,并在We ...
- Spark on Yarn——spark1.5.1集群配置
写在前面: spark只是一种计算框架,如果要搭建集群要依托与一定的组织模式. 目前来说,Spark集群的组织形式有三种: 1. Standalone:使用akka作为网络IO组件,mast ...
- [bzoj] 1085 骑士精神 || ID-DFS
原题 找到最少的步数成为目标状态. IDDFS(限制层数的dfs)即可 #include<cstdio> #include<algorithm> using namespace ...
- ACM-The Coco-Cola Store
题目: Once upon a time, there is a special coco-cola store. If you return three empty bottles to the s ...
- 牛客~~扫雷~~~DFS+模拟
链接:https://www.nowcoder.com/acm/contest/118/F来源:牛客网 题目描述 <扫雷>是一款大众类的益智小游戏,于1992年发行.游戏目标是在最短的时间 ...
- linux查看日志的方法
linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------- ...