网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

ASP.NET Forms身份认证

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/01/05
之配套使用的用户信息的类型定义如下(可以根据实际情况来定义): 498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/5/11151246337.png" />

  1. public class UserInfo : IPrincipal  
  2. {  
  3.     public int UserId;  
  4.     public int GroupId;  
  5.     public string UserName;  
  6.       
  7.     // 如果还有其它的用户信息,可以继续添加。  
  8.  
  9.     public override string ToString()  
  10.     {  
  11.         return string.Format("UserId: {0}, GroupId: {1}, UserName: {2}, IsAdmin: {3}",  
  12.             UserId, GroupId, UserName, IsInRole("Admin"));  
  13.     }  
  14.  
  15.     #region IPrincipal Members  
  16.  
  17.     [ScriptIgnore]  
  18.     public IIdentity Identity  
  19.     {  
  20.         get { throw new NotImplementedException(); }  
  21.     }  
  22.  
  23.     public bool IsInRole(string role)  
  24.     {  
  25.         ifstring.Compare(role, "Admin"true) == 0 )  
  26.             return GroupId == 1;  
  27.         else 
  28.             return GroupId > 0;  
  29.     }  
  30.  
  31.     #endregion  

注意:表示用户信息的类型并不要求一定要实现IPrincipal接口,如果不需要用户组的判断,可以不实现这个接口。

登录时需要调用的方法(定义在MyFormsPrincipal类型中):

  1. /// <summary>  
  2. /// 执行用户登录操作  
  3. /// </summary>  
  4. /// <param name="loginName">登录名</param>  
  5. /// <param name="userData">与登录名相关的用户信息</param>  
  6. /// <param name="expiration">登录Cookie的过期时间,单位:分钟。</param>  
  7. public static void SignIn(string loginName, TUserData userData, int expiration)  
  8. {  
  9.     ifstring.IsNullOrEmpty(loginName) )  
  10.         throw new ArgumentNullException("loginName");  
  11.     if( userData == null )  
  12.         throw new ArgumentNullException("userData");  
  13.  
  14.     // 1. 把需要保存的用户数据转成一个字符串。  
  15.     string data = null;  
  16.     if( userData != null )  
  17.         data = (new JavaScriptSerializer()).Serialize(userData);  
  18.  
  19.  
  20.     // 2. 创建一个FormsAuthenticationTicket,它包含登录名以及额外的用户数据。  
  21.     FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(  
  22.         2, loginName, DateTime.Now, DateTime.Now.AddDays(1), true, data);  
  23.  
  24.  
  25.     // 3. 加密Ticket,变成一个加密的字符串。  
  26.     string cookieValue = FormsAuthentication.Encrypt(ticket);  
  27.  
  28.  
  29.     // 4. 根据加密结果创建登录Cookie  
  30.     HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, cookieValue);  
  31.     cookie.HttpOnly = true;  
  32.     cookie.Secure = FormsAuthentication.RequireSSL;  
  33.     cookie.Domain = FormsAuthentication.CookieDomain;  
  34.     cookie.Path = FormsAuthentication.FormsCookiePath;  
  35.     if( expiration > 0 )  
  36.         cookie.Expires = DateTime.Now.AddMinutes(expiration);  
  37.  
  38.     HttpContext context = HttpContext.Current;  
  39.     if( context == null )  
  40.         throw new InvalidOperationException();  
  41.  
  42.     // 5. 写登录Cookie  
  43.     context.Response.Cookies.Remove(cookie.Name);  
  44.     context.Response.Cookies.Add(cookie);  

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号