Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Material para aprender simple membership com Roles

Gostaria de uma dica de material para simple membership usando Roles para criar perfis de usuário.

4 respostas

Oi Fagner, tudo bom?

Pra lidar com Roles você pode dar uma olhada no Roles API. No proprio link da documentação você encontra alguns exemplos de uso =)

Qualquer problema é só falar!

Abraço e bons estudos.

Estou enfrentando problema na criação das Roles. Quando tento verificar a existência de uma Role o Visual Studio me retorna um erro sem tratamento.

if (!Roles.RoleExists("admin"))

MySql.Data.MySqlclient.MySqlException... ...is not allowed to connect to this MariaDB server'

Web.config

<membership defaultProvider="MySQLMembershipProvider">
      <providers>
        <remove name="MySQLMembershipProvider" />
        <add name="MySQLMembershipProvider"
             type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"
      autogenerateschema="true"
      connectionStringName="Contexto"
      enablePasswordRetrieval="false"
      enablePasswordReset="true"
      requiresQuestionAndAnswer="true"
      applicationName="/"
      requiresUniqueEmail="false"
      passwordFormat="Clear"
      maxInvalidPasswordAttempts="5"
      minRequiredPasswordLength="7"
      minRequiredNonalphanumericCharacters="1"
      passwordAttemptWindow="10"
      passwordStrengthRegularExpression="" />
      </providers>
    </membership>

As tabelas no Banco de Dados estão sendo criadas corretamente.

Eu sei que o Roles é do "System.Web.Security;" Googlei muita coisa até chegar aqui e pedir uma ajuda e não achei nada que pudesse me ajudar.

To buscando usar eles assim.

[Authorize(Roles ="admin")]
        public ActionResult Index()
solução!

Oi Fagner, tudo bom? =)

O erro aponta um problema de acesso, se sua aplicação se conecta normalmente para gerar o schema, significa que possivelmentes temos configurações diferentes para conectar com o banco a partir da aplicação e a partir das Roles.

Dei uma pesquisada aqui e, realmente, precisamos configurar o SqlRoleProvider no arquivo web.config. Algo como:

<roleManager enabled="true" defaultProvider="SqlRoleManager">
  <providers>
    <add name="SqlRoleManager" 
         type="System.Web.Security.SqlRoleProvider"
         connectionStringName="SqlRoleManagerConnection"
         applicationName="MyApplication" />
  </providers>
</roleManager>

No link acima, você encontra um passo-a-passo sobre essa configuração.

Qualquer problema é só falar =)

Abraço!

High 5 amigão, agora foi que foi uma beleza.

<roleManager defaultProvider="MySQLRoleProvider">
      <providers>
        <add name="MySQLRoleProvider"
             type="MySql.Web.Security.MySQLRoleProvider, MySql.Web, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"
      connectionStringName="Contexto"
      applicationName="/" />
      </providers>
    </roleManager>