Sto scoprendo che se aggiungo un utente a un ruolo in ASP Identity, non ha effetto fino a quando non esco ed effettuo nuovamente l'accesso. C'è qualcosa che devo fare per aggiornare i ruoli di un utente senza forzare un utente disconnettersi prima?MVC 5 AddToRole richiede il logout prima che funzioni?
Ecco come aggiungo l'utente al ruolo.
var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
var userId = HttpContext.Current.User.Identity.GetUserId();
userManager.AddToRole(userId, roleName);
Quindi, quasi immediatamente, reindirizzo l'utente a questo metodo di azione. Posso dire nel database che sono stato aggiunto al ruolo corretto, ma MVC continua a reindirmi alla pagina di accesso. Tuttavia, se mi disconnetto, riaccedi e tento di accedere a questo metodo di azione, funziona perfettamente.
[Authorize(Roles = RecoveryStandardRoles.ServiceProvider)]
public partial class CertifyController : Controller
{
#region Public Methods and Operators
public virtual ActionResult CompanyProfile()
{
return this.View();
}
#endregion
}
Grazie per aver dedicato tempo alla mia domanda!
Se stai controllando se qualcuno è in un ruolo nel codice, 'User.IsInRole (roleName)' necessita di logout e login per riflettere che viene aggiunto al nuovo ruolo. 'UserManager.IsInRole (userID, roleName)' no. – nmit026