5

Abbiamo implementato Google OAuth2, e crea gli utenti nella tabella ASPNetUsers. Questo funziona bene, e possiamo vedere l'utente autenticato tramite User.Identity.GetUserName().Aggiungi ruoli o domande a utente creato tramite Google OAuth2

Se aggiungiamo a questo utente di un ruolo, dicono "MyCustomRole", via AspNetRoles e tavolo AspNetUserRoles, qualsiasi metodo fissato con:

[Authorize(Roles="MyCustomRole")] 

non è possibile accedere. L'applicazione inoltra l'utente autenticato al controller Login.

Qual è il meccanismo adeguato per l'aggiunta di questi utenti esternamente autenticati ruoli, i ruoli aventi tali accessibile per la [Autorizzazione (Roles = "")] attributo?

+0

Si scopre che stavo utilizzando l'ID anziché il nome, nel filtro. Così, invece di [Autorizza (ruoli = "MY_ROLE_ID")], aveva bisogno di essere semplicemente [Autorizza (ruoli = "MyRole")]. E 'bello, e abbastanza semplice, per essere in grado di aggiungere i ruoli agli utenti autenticati da sistemi esterni via OAuth2, semplicemente aggiungendo la riga da AspNetUserRoles come si farebbe con qualsiasi altro tipo di utente. –

risposta

0

Non sai quale versione di asp identity si sta usando ma realizzare ciò che si desidera utilizzare questo codice

[HttpPost] 
    public async Task<ActionResult> AddUserToRole() 
    { 
    var result = await UserManager.AddToRolesAsync(User.Identity.GetUserId(), 
new[]{"YourCustomRole"}); 
    if (!result.Succeeded){ 
     return View(); 
    } 
    else{ 
     return RedirectToAction("index"); 
    } 
    } 

Per verificare questa potrebbe essere necessario creare un progetto vuoto, un vuoto! quindi eseguire questo NuGet nella confezione newget PM> Install-Package Microsoft.AspNet.Identity.Samples -Pre allora si può mettere il mio codice di azione nel UsersAdmin contoller

Problemi correlati