Asp.Net 采用Forms身份认证,避免采用Session占用服务器资源
来源:互联网 发布:数据库基础与应用pdf 编辑:程序博客网 时间:2024/06/05 11:57
今天写了个测试用户,也发现了一些问题:
- ticket 必须加密存放在cookie中,userData才能保存,否则,获取userData时会找不到值:
FormsAuthenticationTicket ticket = newFormsAuthenticationTicket(
1,
"admin",
DateTime.Now,
DateTime.Now.AddDays(10),
true,
"userData"
);
string encryptTicket = FormsAuthentication.Encrypt(ticket);//必须加密之后才有效
HttpCookie cookie = newHttpCookie(FormsAuthentication.FormsCookieName, encryptTicket);
cookie.Expires = ticket.Expiration;
Response.Cookies.Add(cookie);
//FormsAuthentication.SetAuthCookie(ticket.Name, ticket.IsPersistent, "/");
上面两种方式均是将登陆票据放在cookie中,且cookie名称都为FormsAuthentication.FormsCookieName,但是后者将会丢失userData信息。
- 如果觉得User信息不够,可以派生GenericPrincipal类来重写用户信息
publicclassPageUser : GenericPrincipal {
privateint userId;
publicint UserId {
get { return userId; }
}
public PageUser(IIdentity identity, string[] roles)
: base(identity, roles) {
userId = 1;
}
publicbool hasRight(RightTye right) {
returnfalse;
}
}
FormsIdentity fi = (FormsIdentity)User.Identity;
FormsAuthenticationTicket ticket = fi.Ticket; //取得票据
string userData = ticket.UserData; //取得信息
string[] roles = userData.Split(',');
HttpContext.Current.User = newPageUser(fi, roles);
PageUser pageUser = HttpContext.Current.User asPageUser;
- 也可以不重写User信息,将用户扩展信息写到userData中,采用Xml格式进行解析
例如,登录的时候:
string userData = @"
昵称"">
";
- Asp.Net 采用Forms身份认证,避免采用Session占用服务器资源
- ASP.NET Forms 身份认证
- ASP.NET Forms身份认证
- ASP.NET Forms身份认证
- ASP.NET Forms身份认证
- ASP.NET Forms身份认证
- ASP.NET Forms身份认证
- 细说ASP.NET Forms身份认证
- 细说ASP.NET Forms身份认证
- 简单的ASP.NET Forms身份认证
- 细说ASP.NET Forms身份认证
- 细说ASP.NET Forms身份认证
- 细说ASP.NET Forms身份认证
- 细说ASP.NET Forms身份认证
- 细说ASP.NET Forms身份认证
- 细说ASP.NET Forms身份认证
- 细说ASP.NET Forms身份认证
- asp.net mvc forms身份认证
- ANT的安装/配置笔记
- 索引
- 自制进程管理器
- 生命即是奋斗和探索的一个过程
- 新版 PASSPORT 登陆攻略!
- Asp.Net 采用Forms身份认证,避免采用Session占用服务器资源
- 测试函数printf()返回什么东西的值
- 张殊凡事件
- wsdl 文件结构
- 常用正则表达式(转自bobby的专栏)
- QReader阅读中文文本乱码的解决
- 缓冲区溢出-代码小看
- 为什么面向对象的编程会在软件开发领域造成如此震憾的影响?
- java 程序员成长之路