角色授权的代码如下:void Application_AuthenticateRequest(object sender,EventArgs e)
    {
        if (this.Request.IsAuthenticated)
        {
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ServerGLKJConnectionString"].ConnectionString);
            SqlCommand comm = new SqlCommand();
            try
            {
                comm.Connection = conn;
                comm.CommandText = "SELECT MemberInRole.RoleIndentifier FROM MemberInRole,Members where Members.MemberID=MemberInRole.MemberID AND Members.Email='"+User.Identity.Name.ToString()+"'";
                conn.Open();
                SqlDataReader reader = comm.ExecuteReader();
                StringCollection roles = new StringCollection();
                while(reader.Read())
                {
                    roles.Add(reader[0].ToString());
                }
                string[] rolesArr = new String[roles.Count];
                roles.CopyTo(rolesArr, 0);
                this.Context.User = new System.Security.Principal.GenericPrincipal(this.User.Identity, rolesArr);
            }
            catch (SqlException ex)
            {
                throw ex;
            }
            finally
            {
                conn.Close();
            }
        }
    }已经郁闷两天了,到网上找了好多资料,也没发现错误。登陆能成功,就是角色用不了。请大家年帮忙看看。

解决方案 »

  1.   

    断点看看是不是User.Identity.Name.ToString()没有取到值
    再看看登录页面,有可能没有使用永久cookie还有不要使用FormAuth....那个类的RedirectToFromPage那个方法跳转单步仔细检查,我觉得应该是cookie的问题。
      

  2.   

    数据库查询已经测试过了,没有问题。
    我在登陆的时候确实是使用FormsAuthentication.RedirectFromLoginPage跳转的有什么问题吗?
    有可能没有使用永久cookie,是什么意识呢?我怎么测试呢?