我们的项目采用N层开发,涉及有会员(个人会员、企业会员和高极会员等)管理等权限问题,在会员认证机制上想构建基于forms的验证机制,并使用角色.
现有两种思路,请大家帮参考并提一下意见,
第一种是创建FormsAuthenticationTicket创建一个Cookie并回发到客户端
FormsAuthenticationTicket authTicket = new 
 FormsAuthenticationTicket( 
  1, // 版本号。 
  txtUserName.Text, // 与身份验证票关联的用户名。 
  DateTime.Now, // Cookie 的发出时间。 
  DateTime.Now.AddMinutes(20),// Cookie 的到期日期。 
  false, // 如果 Cookie 是持久的,为 true;否则为 false。 
  roles ); // 将存储在 Cookie 中的用户定义数据。 
  roles是一个角色字符串数组 
  string encryptedTicket = FormsAuthentication.Encrypt(authTicket); //加密
并且在在Application_AuthenticateRequest事件中处理程序中(Global.asax)中,使用票证创建IPrincipal对象并存在HttpContext.User中
判断某个角色验证 
 HttpContext.Current.User.IsInRole(roles)
在web.config里做好设定,在ui层做好反应机制,接下来就可以把自己的web程序交给Forms验证来保护了
第二种是使用HttpContext类中的User属性来实现用户验证
创建两个实现Iprincipal和Iidentity的类,分别为MyIprincipal和MyIdentity
在完成了这两个类之后我们还要创建一个自己的Page类,来配合我们的验证,继承自System.Web.UI.Page类,
然后项目中的所有Web页面继承这个自己建的Page类在页面加载的时候从缓存中提取用户信息,
通过验证后再生成户验证票System.Web.Security.FormsAuthentication.SetAuthCookie(tbxUserID.Text,true);
大家觉得哪种机制比较好,请指点指点。谢谢