/ / Ruoli - Problema con User.IsInRole - asp.net, ruolo

Ruoli - Problema con User.IsInRole - asp.net, ruolo

Ho una pagina di registro in cui l'utente è assegnato a un ruolo come segue una volta che l'utente fa clic sul pulsante di invio:

    MembershipUser oMU;

if (!(Roles.RoleExists("Stream")))
{
Roles.CreateRole("Stream");
}

oMU = Membership.CreateUser(txtUserName.Text.Trim(), txtPassword.Text.Trim(), txtEmail.Text.Trim());

Membership.UpdateUser(oMU);

Roles.AddUserToRole(oMU.UserName, "Stream");

Quando l'utente accede a una schermata di accesso, ho il seguente:

Quando l'utente effettua il login, devo assicurarmi che facciano parte di quel ruolo:

    if (User.IsInRole("Stream"))
{

}

ma non entra mai nel blocco User.IsInRole. Cosa devo fare per fare in modo che l'utente che si è registrato faccia parte del ruolo in modo tale che funzioni con User.IsInRole.

Nota che ho una cartella in quanto tale, quindi ho bisogno che faccia parte del ruolo di streaming:

    <?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<deny users="*" />
<allow roles="Stream" />
</authorization>
</system.web>
</configuration>

risposte:

1 per risposta № 1

Mossa <allow roles="Stream" /> sopra <deny users="*" />. Altrimenti, tutti gli utenti verranno rifiutati.

<configuration>
<system.web>
<authorization>
<allow roles="Stream" />
<deny users="*" />
</authorization>
</system.web>
</configuration>

Assicurati di avere membri e RoleManager in web.config

Ecco il campione -

<membership defaultProvider="DefaultMembershipProvider">
<providers>
<clear/>
<add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="XXXXXSqlConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="XXXXX"/>
</providers>
</membership>
<roleManager enabled="true" cacheRolesInCookie="false" defaultProvider="DefaultRoleProvider">
<providers>
<clear/>
<add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="XXXXXSqlConnection" applicationName="XXXXX"/>
</providers>
</roleManager>

0 per risposta № 2

Prova a usare HttpContext per ottenere l'utente di accesso corrente:

if (HttpContext.Current.User.IsInRole("Stream"))
{

}