【问题标题】:Update role with aspnet membership provider使用 aspnet 成员资格提供程序更新角色
【发布时间】:2011-12-30 20:29:50
【问题描述】:

我有一个 RadioButtonList“chklRoles”,它有 4 个按钮。如果我选择一个角色,我想更新数据库 aspnet_UserInRoles。但似乎 Aspnet Membership Provider 没有更新方法。我该怎么做?

 protected void chklRoles_SelectedIndexChanged(object sender, EventArgs e)
    {
        foreach (string role in Roles.GetRolesForUser(userName))
        {
            if (chklRoles.Items.FindByText(role).Selected == true)
            {  
                // update role;
               // Roles.DeleteRole("origin_role");
               //  Roles.AddUserToRole(userName, role);
            }
        }
    }

编辑:我认为删除它并添加一个新角色可能是一个选项。但请给我一个建议。 更新:每个用户只能拥有一个角色。我想要的是如何通过单击单选按钮来切换角色。更新意味着新角色将取代旧角色。

【问题讨论】:

    标签: asp.net asp.net-membership roleprovider


    【解决方案1】:

    您可以使用RoleProvider 为用户添加或删除角色。您必须确定要添加和/或删除哪些角色。看起来像这样:

    protected void chklRoles_SelectedIndexChanged(object sender, EventArgs e)
    {
        var current = Roles.GetRolesForUser(userName);
        var added = new List<string>();
        var removed = new List<string>();
    
        // go over all the roles to build the lists 
        foreach (string role in Roles.GetAllRoles())
        {
            if (chklRoles.Items.FindByText(role).Selected && !current.Contains( role ))
            {  
                added.Add( role );
            }
            else if( current.Contains( role ) )
            {
                removed.Add( role );
            }
        }
        // apply changes if needed
        if( added.Count > 0 )
        {
           Roles.AddUsersToRoles( new[]{userName}, added.ToArray());
        }
        if( removed.Count > 0 )
        {
            Roles.RemoveUsersFromRoles(new[]{userName}, removed.ToArray());
        }
    }
    

    请注意,我没有机会彻底检查此代码。

    【讨论】:

    • 啊,对。从您的代码中不清楚您正在使用单选按钮。无论如何,这段代码应该可以完成这项工作,尽管您可能希望对其进行调整以强制执行每个用户一个角色的策略。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    相关资源
    最近更新 更多