日期:2014-05-20  浏览次数:20571 次

Page.User 有什么用?
我是一个ASP.NET初学者,没有ASP.NET   1.1的基础,直接学习2.0来的,遇到很多问题,希望得到大家的讨论和帮助!

提这个问题,请大家不要见笑,我发现定义里Page.User类型为一接口,其具体实现在哪都不知道,而且它的IIdentity   Identity   值是如何来的,如何最终代表了访问者也不清楚。当然这些问题如果使用成员资格和角色就都不用管了,但是几经比较之后我还是决定自己写权限管理,这种情况下:Page.User还有用吗,或者我应该自己干预Page.User的一些动作,使它与自定义的用户系统关联?

以下是我看到的一些东西:
-----------------------
查看定义得知:
public   class   System.Web.UI.Page
{
    //   ……
    public   IPrincipal   User   {   get;   }
    //   ……
}
继续跟踪:
public   interface   System.Security.Principal.IPrincipal
{
    IIdentity   Identity   {   get;   }
    bool   IsInRole(string   role);
}
继续跟踪:
public   interface   System.Security.Principal.IIdentity
{
    string   AuthenticationType   {   get;   }
    bool   IsAuthenticated   {   get;   }
    string   Name   {   get;   }
}


------解决方案--------------------
自己做验证,那个就没用了……
其实要实现很复杂的,你可以在你自己的验证完毕后,给HttpContext.Current.User赋值,这样,你在Page中就能得到用户信息了,你不想要就不用理会……
------解决方案--------------------
这种情况你你在用ASP.net自带的验证方式时候才有用的

比如ASP.net 的 Form验证

其余情况没有用的
------解决方案--------------------
up
------解决方案--------------------
自己做验证,那个就没用了……

这种情况你你在用ASP.net自带的验证方式时候才有用的

*****************************

这两位有误导嫌疑

看代码:

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
 HttpApplication app = (HttpApplication)sender;

 if (app.Request.IsAuthenticated)
 { // 用户已在当前应用程序验证身份
  if (app.User.Identity is FormsIdentity)
  { // 若用户已登录整个构件库网站平台,且采用窗体验证方式
   FormsIdentity identity = (FormsIdentity)app.User.Identity; // 获取身份验证票
   char[] sp = { ', '};
   string[] roles = identity.Ticket.UserData.Split(sp); // 获取身份验证票中保存的用户角色信息(以 ", "分隔的字符串)
   app.Context.User = new System.Security.Principal.GenericPrincipal(identity, roles); // 根据取得的用户角色信息创建角色对象
  }
 }
}