0

我已经在网站上工作了一段时间了。我正在使用正常工作的成员资格、角色和个人资料提供者。

我有一个标准的 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 表时,我无法再按预期访问成员页面。新创建的用户没有添加到任何角色,尽管他可以看到他不应该看到的所有页面。这把我吓坏了!

4

1 回答 1

0

好的,我修复了注册后不会分配角色的问题。您可能认为 userCreated 在用户登录后被调用,但事实并非如此。Profile.UserName 结果为空字符串!

我仍然遇到管理页面的问题......我从下拉列表的工具提示中获取用户名值。通过将鼠标悬停在 ddl 上,我可以直观地验证用户名确实在 tooltip 属性中。

Assuming that the same problem exists here -> the usr (username) string is empty. Why can't I get the value?

于 2012-11-17T20:11:38.047 回答