在global.ascx.cs中:protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
HttpApplication App = (HttpApplication) sender;
HttpContext Ctx = App.Context ; //获取本次Http请求相关的HttpContext对象
if (Ctx.Request.IsAuthenticated == true) //验证过的用户才进行role的处理
{
FormsIdentity Id = (FormsIdentity)Ctx.User.Identity ;
FormsAuthenticationTicket Ticket = Id.Ticket ; //取得身份验证票
string[] Roles = Ticket.UserData.Split (',') ; //将身份验证票中的role数据转成字符串数组
Ctx.User = new GenericPrincipal (Id, Roles) ; //    
}
}

解决方案 »

  1.   

    http://www.csdn.net/develop/Read_Article.asp?Id=18958
      

  2.   

    gshope(北京.Net) :
         我按你的方法处理,发现Ctx.Request.IsAuthenticated总是为false,请继续不吝赐教阿!!
      vasun(新帐号):
         按照该方法处理,同样出现Ctx.Request.IsAuthenticated为false问题!!
      

  3.   

    在login.aspx.cs中通过Context.Response.Cookies.Add(authCookie)添加的cookie在global.ascx.cs中读取(HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies[cookieName];)竟然为空!!!
    这是为什么?方法有问题么?
      

  4.   

    把web.config设置,贴出来看一下。另外gshope(北京.Net) 说的处理方法,是恢复用户的角色,肯定要的。
      

  5.   

    我给你个连接,你好好看看吧:
    http://www.csdn.net/develop/read_article.asp?id=18958
    http://www.codeproject.com/aspnet/formsroleauth.asp
      

  6.   

    "发现Ctx.Request.IsAuthenticated总是为false"  这说明你没有通过验证,注意客户端的IE不能关闭cookie
      

  7.   

    web.config: 
    <authentication mode="Forms">
          <forms loginUrl="/Login/login.aspx" protection="All" name="AuthCookie" path="/">
          </forms>
     </authentication>
            <authorization>
          <deny users="?" />
          <allow users="*" />
      </authorization>
      

  8.   

    按照 gshope(北京.Net) 应该可以不要在global.ascx.cs中读取(HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies[cookieName];)只要判断
    if (Ctx.Request.IsAuthenticated == true) //验证过的用户才进行role的处理
      

  9.   

    各位大哥,还是不对阿!!
    我按gshope(北京.Net) 给的连接:
    http://www.codeproject.com/aspnet/formsroleauth.asp
    按照这个做,可是HttpContext.Current.User总是为空!
    痛苦ing
      

  10.   


     按照IBuySpy的模式处理,成功了!感谢两位!