2012-11-17 103 views
0

我一直在网站上工作一段时间。 我正在使用正在正常工作的成员资格,角色和配置文件提供程序。将用户添加到角色失败

我有一个标准的createuserwizard控件,用户可以注册。当用户注册时,我想将他添加到某个角色,如下所示:

Roles.AddUserToRole(Profile.UserName, "Member"); 

我通过userCreated事件触发器来执行此操作。

还有一个adminpage其中一个管理员应该能够更改用户的角色,我做的是这样的:

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

您是否在web.config中启用角色? – lboshuizen

+0

我忘了提及...用户自动登录(现在)。 – DerpyNerd

+0

是的,角色已启用... 您是否想要查看我的web.config? – DerpyNerd

回答

0

好的,我解决了注册后不会分配角色的问题。 你会认为userCreated在用户登录后被调用,但它不是。 Profile.UserName导致一个空字符串!

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

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

相关问题