最近被Context.User、FormsAuthenticationTicket、IPrincipal和IIdentity搞得快死了。看了一些文章还是不怎么理解
当开启了form验证后,用户浏览一个页面,会生成一个Context.User对象并且不同用户之间是独立的是吗?(A和B用户都浏览一个页面,他们有各自的Context.User)当生成一个Context.User后Context.User.identity.name是从票据中获取而这个name的值是什么?(是不是随机的?想sessionid的那样?还是和票据的name一样)
FormsAuthenticationTicket其实不是只是对cookie的操作,只是被封装了一下?关于授权:
扩张IPrincipal可以创建Perssionsions的列表和Roles列表,可以保存权限和角色到Perssionsions的列表和Roles列表中。但是我对Context.User不怎么理解。Context.User是类似于Session的吗?不过我看到一些帖子说Context.User不能在页面之间传递,每个页面都创建一个Context.User。我在看《asp.net web站点高级编程》里面说了一个using 的用法
下面是其实一段public DataRow Retrieve(int userID)
{
    SqlParameter[] parameters = { new SqlParameter("@UserID", SqlDbType.Int, 4) };
    parameters[0].Value = userID;
    using (DataSet users = RunProcedure( "sp_Accounts_GetUserDetails", parameters, "Users" ))
   {
return users.Tables[0].Rows[0];
   }
}
user对象被using的括号包括,那么不应该是user对象在定义域之后就自动释放资源吗?
那么 return user对象应该没有用吧?(我想是不是c#中的函数返回值是生成一个副本?如果是怎么返回一个引用,ref吗?)

解决方案 »

  1.   

    最后一个问题知道的
    你说的对,在using内部会自动关闭所有的已经打开的资源
    Context.User就是forms验证后的用户,A和B页面获取的是一样地 
      

  2.   

    那么using里面的是DateSet的users对象,虽然有返回,但是不是释放资源吗?那么返回的DataSet指向的对象应该不存在了吧?
      

  3.   

    User是一个IPrincipal接口实例,表示用户的安全上下文...当前代码以该用户的名义运行,包括用户的标识(IIdentity)和它们所属的任何角色...IIdentity.Name是由操作系统或其他身份验证提供程序提供的用户名称,取决于你的身份验证方式...对WindowsIdentity来说就是Windows系统当前用户登录名,对ASP.NET Form验证来说就是ASP.NET安全数据库中的UserName...using只是自动调用IDisposable接口,不确保能释放资源...需要你自己在实现时确保在Dispose方法中释放资源...当然CLR的对象是可以确保的...
     
    return和using风马牛不相及...
      

  4.   

    你设计的是不是权限的票据验证,你可以研究一下浏览器的cookie,asp.net对这个也有一定的限制。看看和它有关没
      

  5.   


    当一个用户访问页面,但没登录,使用的是ACCESS的数据库,也没用用.net中的MemberShip、Profile、Role。那么identity.name又是什么?
      

  6.   

    对于未经身份验证的实体,Name通常被设置为空字符串""...通过属性IsAuthenticated指示用户是否已验证...
      

  7.   

    关于授权: 
    扩张IPrincipal可以创建Perssionsions的列表和Roles列表,可以保存权限和角色到Perssionsions的列表和Roles列表中。但是我对Context.User不怎么理解。 Context.User是类似于Session的吗?不过我看到一些帖子说Context.User不能在页面之间传递,每个页面都创建一个Context.User。 
      

  8.   

    关于授权: 
    扩张IPrincipal可以创建Perssionsions的列表和Roles列表,可以保存权限和角色到Perssionsions的列表和Roles列表中。但是我对Context.User不怎么理解。 Context.User是类似于Session的吗?不过我看到一些帖子说Context.User不能在页面之间传递,每个页面都创建一个Context.User。 
      

  9.   

    http://www.cnblogs.com/JimmyZhang/archive/2009/03/12/1349457.html