全部家产拿出来向诸位高手请教一个Membership中的profile 以及 权限控制的问题! 如果用自带成员角色管理要用Vs自动生成的数据库。感觉不方便,所以也没用。就用了Form验证。 权限管理这块我还是用Session控制的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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(); } 以下是我的新书开发大全中的章节,正好与楼主第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登录系统 楼主应该好好看看MSDN的文章了~~{从开头开,你就会对BS有更多的了解} TextBox 求助关闭数据库的问题 网站之间传递参数 连接SQL2005数据库出错呀!看遍帖子都解决不了,高手救命! SqlDataReader转DataTable的问题 同一部主机的两个不同域名的网站(都是asp.net写的),可不可以共享Session? asp.net 同时打开多个文件 gridview的列的宽度 SQL SERVER数据库、datatime类型字段问题 关于数据库的一些问题 VS2005发布网站后,浏览网站为何出现"服务器不可使用"? asp.net 水晶报表直接打印输出,在调试状态下正常,运行状态下没有反映 XP + VS005
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();
}
假设一个系统中定义了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登录系统