我已经在网站上工作了一段时间了。 我正在使用正常工作的成员资格,角色和个人资料提供程序。
我有一个标准的createuserwizard控件,用户可以在其中注册。当用户注册时,我想将他添加到某个角色,如下所示:
Roles.AddUserToRole(Profile.UserName, "Member");
我通过userCreated事件触发器执行此操作。
还有一个管理员,管理员应该可以更改用户的角色,我这样做:
DropdownList ddl = ((DropDownList)sender);
String usr = ddl.enter code here
if (Roles.IsUserInRole(usr, "Member")) {
Roles.RemoveUserFromRole(usr, "Member");
}
if (Roles.IsUserInRole(usr, "Visitor")) {
...
switch (ddl.selectedIndex)
case 0:
Roles.AddUserToRole(usr, "Admin");
case 1:
...
这也不起作用。如果我自己去数据库,那么用户就没有被添加到aspnet_UserInRoles。
额外细节: 当我创建用户时,他可以看到管理员,这不是预期的。安全修剪工作正常,当我手动将用户添加到aspnet_UsersInRoles表时,我无法按预期到达成员页面。 新创建的用户不会添加到任何角色,但他可以看到他不应该看到的所有页面。这吓坏了我!
答案 0 :(得分:0)
好吧,我解决了注册后不会分配角色的问题。 您认为在用户登录后会调用userCreated,但事实并非如此。 Profile.UserName会产生一个空字符串!
我仍然遇到管理页面问题...我从下拉列表的工具提示中获取用户名值。通过将鼠标悬停在ddl上,我可以直观地验证用户名确实在工具提示属性中。
假设此处存在同样的问题 - > usr(用户名)字符串为空。为什么我不能得到这个值?