如果用自带成员角色管理要用Vs自动生成的数据库。感觉不方便,所以也没用。就用了Form验证。 
权限管理这块我还是用Session控制的。

解决方案 »

  1.   

     if (User.IsInRole("Administrators"))Administrators是一个角色,是在成员资格中定义的角色,也可以是
     if (User.IsInRole("Teachers"))

     if (User.IsInRole("Students"))
    private void BindData()
        {
            DataTable dataTable = new DataTable();        dataTable.Columns.Add("UserName", typeof(System.String));
            dataTable.Columns.Add("City", typeof(System.String));
            dataTable.Columns.Add("Sex", typeof(System.String));
            dataTable.Columns.Add("BirthDay", typeof(System.DateTime));
            dataTable.Columns.Add("MSN", typeof(System.String));
            dataTable.Columns.Add("Address", typeof(System.String));
            dataTable.Columns.Add("Mobile", typeof(System.String));
            dataTable.Columns.Add("Phone", typeof(System.String));        ProfileCommon profile = null;
            DataRow dataRow = null;
            //遍历当前所有用户
            foreach (MembershipUser user in Membership.GetAllUsers())
            {
                dataRow = dataTable.NewRow();
                dataRow["UserName"] = user.UserName;
                //获取指定用户Profile
                profile = Profile.GetProfile(user.UserName);
                dataRow["City"] = profile.City;
                dataRow["Sex"] = profile.Sex;
                dataRow["BirthDay"] = profile.BirthDay;
                dataRow["MSN"] = profile.MSN;
                dataRow["Address"] = profile.Address;
                dataRow["Mobile"] = profile.Communication.Mobile;
                dataRow["Phone"] = profile.Communication.Phone;
                dataTable.Rows.Add(dataRow);
            }
            GridView1.DataSource = dataTable;
            GridView1.DataBind();
        }
      

  2.   

    以下是我的新书开发大全中的章节,正好与楼主第3条有关Personalize个性化事件在ASP.NET获取与当前请求关联(如会话状态)时发生,在应用程序的Globa.asax文件中的Profile_Personalize全局事件中,可以使用ProfileModule类的Personalize事件。Personalize事件用于指定自定义用户配置文件。
    假设一个系统中定义了Administrators、Users和Guests这三个角色,每个角色拥有的权限大小不一样,Administrators>Users>Guests,系统可能有成千上万个用户,不可能为每个用户都定义权限,给用户定义角色是最方便的选择。每个角色的权限存储在一个用户的Profile配置文件中,例如Administrators角色的权限存储在Administrator用户的Profile配置中。在Profile_Personalize全局事件中,根据角色将指定的用户(例如Adminstrator用户)Profile配置取出,赋予当前用户,具体的步骤如下:
    1.添加角色和用户
    可以使用网站管理工具添加Administrators、Uses、和Guests这三个角色,在网站管理工具中选择“安全→创建或管理角色”进行角色添加,如图21.10所示。
     
    图20.10  为系统添加角色
    选择“安全→创建用户”,创建Administrator、User和Guest这三个角色,如图20.11所示。
     
    图20.11  为系统创建用户
    2.为Profile添加字段
    在web.config中的<properties>节点中添加两个字段,一个是权限名称,一个是权限级别,如下:
    <properties>
    <add name="PowerName" type="System.String"/>
    <add name="PowerLevel" type="System.String"/>
    </properties>
    3.为新增的用户设置权限
    在应用程序中添加一个页面,为页面添加三个DropDownList,分别是用户名称、角色名称和权限级别,分别为administrator、User、Guest添加角色名称和权限级别,如图20.12所示。
     
    图20.12  设置用户的角色和权限级别
    4.定义Profile_Personalize事件
    在Global.asax文件中添加Profile_Personalize事件如下:
    public void Profile_Personalize(object sender, ProfileEventArgs args)
        {
            ProfileCommon userProfile;        if (User == null) { return; }
            userProfile = (ProfileCommon)ProfileBase.Create(User.Identity.Name);        if (User.IsInRole("Administrators"))
                userProfile = userProfile.GetProfile("Administrator");
            else
                if (User.IsInRole("Users"))
                    userProfile = userProfile.GetProfile("User");
                else
                    userProfile = userProfile.GetProfile("Guest");        if (userProfile != null)
                args.Profile = userProfile;
        }
    在页面的Page_Load事件中的代码如下:
    protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                Response.Write(string.Format("欢迎您:{0}<br />您的角色是:{1}<br />您的权限是:{2}<br/>",User.Identity.Name,Profile.PowerName,Profile.PowerLevel));
            }
        }
    下面可以测试一下效果,例如为名为jack的用户分配Administrators角色,然后使用jack用户名登录系统,输出结果如图20.13所示。
     
    图20.13  jack登录系统
      

  3.   

    楼主应该好好看看MSDN的文章了~~{从开头开,你就会对BS有更多的了解}