【问题标题】:Adding users to roles fails将用户添加到角色失败
【发布时间】:2012-11-17 15:54:55
【问题描述】:

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

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

【问题讨论】:

  • 您是否在 web.config 中启用了角色?
  • 我忘了提...用户自动登录(暂时)。
  • 是的,角色已启用...你也想看看我的 web.config 吗?

标签: c# asp.net .net asp.net-membership asp.net-roles


【解决方案1】:

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

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

假设这里存在同样的问题 -> usr(用户名)字符串为空。为什么我无法获得价值?

【讨论】:

    猜你喜欢
    • 2012-10-18
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多