none
Blazor - User.Identity.Name RRS feed

  • Frage

  • Hallo 

    Wie generiere ich den LogIn User in einem Blazor Server Projekt ServiceClass.cs File (nicht Razor Page, da kann ich ja "User.Identity.Name" verwenden) aber wie geht das für ein Class.cs File?

    Danke für eure Hilfe, marcel 

    Muser: 

            // edit/update
            public Task<bool> UpdateABCAsync(Table1abc objTable1abc)
            {
                try
                {
                    var ExistingTable1abc =
                    _context.Table1abc
                    .Where(x => x.Id == objTable1abc.Id)
                    .FirstOrDefault();
                    if (ExistingTable1abc != null)
                    {
                        ExistingTable1abc.Abc =
                            objTable1abc.Abc;
                        ExistingTable1abc.Text = 
                            objTable1abc.Text;
                        ExistingTable1abc.Modified = DateTime.Now;
      ExistingTable1abc.ModifiedBy = ??? User.Identity.Name; ???
                        _context.SaveChanges();
                    }
                    else ...

                     
    Freitag, 5. Februar 2021 08:31

Antworten

  • Hallo Marcel,

    das kommt ganz drauf an wie dein Projekt aufgebaut ist. Benutzt Du das Template von Visual Studio mit "Einzelne Benutzerkonten"? Wenn ja kannst Du dir mit dem AuthenticationStateProvider den User geben lassen

    So in der Art:

    public class Test
    {
        AuthenticationStateProvider _auth;
    
        public Test(AuthenticationStateProvider auth)
        {
            _auth = auth;
        }
    
        public async Task User()
        {
            var authState = await _auth.GetAuthenticationStateAsync();
            authState.User.Identity.Name
            }
    }

    Mehr findest Du in der Doku Authentifizierung und Autorisierung in ASP.NET Core Blazor


    Gruß Thomas
    Github

    Freitag, 5. Februar 2021 09:48
  • Ich weiß nicht so recht wo nun dein Problem ist

    public async Task<bool> UpdateABCAsync(Table1abc objTable1abc)
    {
        var authState = await _auth.GetAuthenticationStateAsync();
    
    
        var ExistingTable1abc = _context.Table1abc
            .Where(x => x.Id == objTable1abc.Id)
            .FirstOrDefault();
    
        if (ExistingTable1abc != null)
        {
            ExistingTable1abc.Abc = objTable1abc.Abc;
            ExistingTable1abc.Text = objTable1abc.Text;
            ExistingTable1abc.Modified = DateTime.Now;
            ExistingTable1abc.ModifiedBy = authState.User.Identity.Name;
            _context.SaveChanges();
        }
    }


    Gruß Thomas
    Github

    Freitag, 5. Februar 2021 15:25

Alle Antworten

  • Hallo Marcel,

    das kommt ganz drauf an wie dein Projekt aufgebaut ist. Benutzt Du das Template von Visual Studio mit "Einzelne Benutzerkonten"? Wenn ja kannst Du dir mit dem AuthenticationStateProvider den User geben lassen

    So in der Art:

    public class Test
    {
        AuthenticationStateProvider _auth;
    
        public Test(AuthenticationStateProvider auth)
        {
            _auth = auth;
        }
    
        public async Task User()
        {
            var authState = await _auth.GetAuthenticationStateAsync();
            authState.User.Identity.Name
            }
    }

    Mehr findest Du in der Doku Authentifizierung und Autorisierung in ASP.NET Core Blazor


    Gruß Thomas
    Github

    Freitag, 5. Februar 2021 09:48
  • Merci, aber leider klappts noch nicht. 

    Die Zeile (authState.User.Identity.Name) verurscht Fehler , ich habe es in (string name =

    authState.User.Identity.Name;

    geändert. 

    Aber wie kriege ich jetzt den User in die entsprechende Zeile (Muster, siehe oben)?

    Hast Du mir eine Info dazu? Besten Dank, marcel 

    Freitag, 5. Februar 2021 14:38
  • Ich weiß nicht so recht wo nun dein Problem ist

    public async Task<bool> UpdateABCAsync(Table1abc objTable1abc)
    {
        var authState = await _auth.GetAuthenticationStateAsync();
    
    
        var ExistingTable1abc = _context.Table1abc
            .Where(x => x.Id == objTable1abc.Id)
            .FirstOrDefault();
    
        if (ExistingTable1abc != null)
        {
            ExistingTable1abc.Abc = objTable1abc.Abc;
            ExistingTable1abc.Text = objTable1abc.Text;
            ExistingTable1abc.Modified = DateTime.Now;
            ExistingTable1abc.ModifiedBy = authState.User.Identity.Name;
            _context.SaveChanges();
        }
    }


    Gruß Thomas
    Github

    Freitag, 5. Februar 2021 15:25
  • Hallo marcel_W,

    Ich nehme an, dass Thomas' Antwort Dir geholfen hat. Bitte lass uns wissen, wenn Du zusätzliche Fragen hast.

    Gruß,

    Ivan Dragov

    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Donnerstag, 18. Februar 2021 13:03
    Moderator