Controllare se l’utente è connesso con il Token di Autenticazione di Base in ASP.NET Core

Sono riuscito a implementare questo token sistema di autenticazione basato su mia domanda, ma ho un po di dubbi. Come posso controllare se un utente è firmato (ad esempio se c’è un token valido nella richiesta) all’interno del metodo? Così, con la [Autorizzare] ?

Così ho il controller e il controller voglio controllare se l’utente ha effettuato l’accesso. Ho pensato di usare questo:

if (_signInManager.IsSignedIn(ClaimsPrincipal.Current))
{
    ...
}

ma non funziona in quanto ClaimsPrincipal.La corrente è sempre null

 

2 Replies
  1. 45

    Non è necessario utilizzare il SigninManager o qualcosa di simile. L’utente viene iniettato sulla pipeline (sulla proprietà dell’Utente del controller di base) e le informazioni vengono inseriti automaticamente dal autenticazione middleware (cookie o token). Così, sul controller:

    bool isAuthenticated = User.Identity.IsAuthenticated;
    • Ho provato il tuo codice ma mi dice che The name 'User' does not exist in the current context
    • Fa il tuo controller di classe eredita da “Controllore” o è POCO?
    • Eredita dal Controller risolto! Io non posso credere che avevo dimenticato!
  2. 3

    sì . mettere [Authorize] attributo sopra la vostra classe o metodi per verificare se l’utente è autentica o meno. Si può ottenere da questo codice:

    var principal = User as ClaimsPrincipal;
    var check = User.Identity.IsAuthenticated;
    • Mi piacerebbe provare senza [Autorizzare] in primo luogo, ma si dice The name 'User' does not exist in the current context
    • Sono necessari i seguenti spazio dei nomi: l’utilizzo del Sistema.Di sicurezza.Principale;
    • Ho fatto riferimento che ora, ma non fa alcuna differenza
    • o utilizzare HttpContext.Corrente.Utente
    • HttpContext.Corrente.Utente
    • Trova HttpContext ma non Corrente
    • Ho risolto da inhereting dal Controller. Grazie

Lascia un commento