Share via


RoleProvider.RemoveUsersFromRoles(String[], String[]) 方法

定義

從已設定 applicationName 的指定角色中,移除指定的使用者名稱。

public:
 abstract void RemoveUsersFromRoles(cli::array <System::String ^> ^ usernames, cli::array <System::String ^> ^ roleNames);
public abstract void RemoveUsersFromRoles (string[] usernames, string[] roleNames);
abstract member RemoveUsersFromRoles : string[] * string[] -> unit
Public MustOverride Sub RemoveUsersFromRoles (usernames As String(), roleNames As String())

參數

usernames
String[]

要從指定角色中移除之使用者名稱的字串陣列。

roleNames
String[]

要從中移除指定使用者名稱之角色名稱的字串陣列。

範例

下列程式碼範例示範 方法的範例實作 RemoveUsersFromRoles

public override void RemoveUsersFromRoles(string[] usernames, string[] rolenames)
{
  foreach (string rolename in rolenames)
  {
    if (rolename == null || rolename == "")
      throw new ProviderException("Role name cannot be empty or null.");
    if (!RoleExists(rolename))
      throw new ProviderException("Role name not found.");
  }

  foreach (string username in usernames)
  {
    if (username == null || username == "")
      throw new ProviderException("User name cannot be empty or null.");

    foreach (string rolename in rolenames)
    {
      if (!IsUserInRole(username, rolename))
        throw new ProviderException("User is not in role.");
    }
  }

  OdbcConnection conn = new OdbcConnection(connectionString);
  OdbcCommand cmd = new OdbcCommand("DELETE FROM UsersInRoles "  +
                                    " WHERE Username = ? AND Rolename = ? AND ApplicationName = ?", conn);

  OdbcParameter userParm = cmd.Parameters.Add("@Username", OdbcType.VarChar, 255);
  OdbcParameter roleParm = cmd.Parameters.Add("@Rolename", OdbcType.VarChar, 255);
  cmd.Parameters.Add("@ApplicationName", OdbcType.VarChar, 255).Value = ApplicationName;

  try
  {
    conn.Open();

    foreach (string username in usernames)
    {
      foreach (string rolename in rolenames)
      {
        userParm.Value = username;
        roleParm.Value = rolename;
        cmd.ExecuteNonQuery();
      }
    }
  }
  catch (OdbcException)
  {
    // Handle exception.
  }
  finally
  {
    conn.Close();      
  }
}
Public Overrides Sub RemoveUsersFromRoles(ByVal usernames As String(), ByVal rolenames As String())

    For Each rolename As String In rolenames
        If rolename Is Nothing OrElse rolename = "" Then _
          Throw New ProviderException("Role name cannot be empty or null.")
        If Not RoleExists(rolename) Then _
          Throw New ProviderException("Role name not found.")
    Next

    For Each username As String In usernames
        If username Is Nothing OrElse username = "" Then _
          Throw New ProviderException("User name cannot be empty or null.")

        For Each rolename As String In rolenames
            If Not IsUserInRole(username, rolename) Then
                Throw New ProviderException("User is not in role.")
            End If
        Next
    Next

    Dim conn As OdbcConnection = New OdbcConnection(connectionString)
    Dim cmd As OdbcCommand = New OdbcCommand("DELETE FROM UsersInRoles " & _
                                             " WHERE Username = ? AND Rolename = ? AND ApplicationName = ?", conn)

    Dim userParm As OdbcParameter = cmd.Parameters.Add("@Username", OdbcType.VarChar, 255)
    Dim roleParm As OdbcParameter = cmd.Parameters.Add("@Rolename", OdbcType.VarChar, 255)
    cmd.Parameters.Add("@ApplicationName", OdbcType.VarChar, 255).Value = ApplicationName

    Try
        conn.Open()

        For Each username As String In usernames
            For Each rolename As String In rolenames
                userParm.Value = username
                roleParm.Value = rolename
                cmd.ExecuteNonQuery()
            Next
        Next
    Catch e As OdbcException
        ' Handle exception.
    Finally
        conn.Close()
    End Try
End Sub

備註

RemoveUsersFromRolesRemoveUserFromRole 類別的 RolesRemoveUsersFromRoleRemoveUserFromRolesRemoveUsersFromRoles 方法呼叫,以從資料來源的指定角色中移除指定的使用者。 只有設定的角色 ApplicationName 會修改。

如果找不到所設定 applicationName 的任何指定角色名稱,我們建議您的提供者擲回 ProviderException

如果任何指定的使用者名稱未與所設定 applicationName 的任何指定角色名稱相關聯,建議您的提供者擲回 ProviderException

如果任何指定的使用者名稱是 null 或 是空字串,我們建議您的提供者擲回例外狀況。

如果任何指定的角色名稱是 null 或 是空字串,我們建議您的提供者擲回例外狀況。

如果您的資料來源支援交易,建議您在交易中包含每個移除作業,並復原交易,並在任何移除作業失敗時擲回例外狀況。

適用於

另請參閱