• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Autoryzacja użytkownika

Aruba Cloud - Virtual Private Server VPS
0 głosów
363 wizyt
pytanie zadane 6 marca 2023 w C# przez Beginner555 Bywalec (2,090 p.)

Cześć, 

Mam problem z autoryzacją użytkownika, po przez metodę AuthorizeAsync z klasy AuthorizationServiceExtensions.

Używam to w takim kodzie: 

public void Remove(int userId, int cryptoinvestId)
        {
            var user = GetUserById(userId);

            var cryptoInvest = _dbContext
                .CryptoInvests
                .FirstOrDefault(x => x.Id == cryptoinvestId);

            var authorizationResult = _authorizationService.AuthorizeAsync(_userContextService.User, cryptoinvestId,
                new ResourceOperationRequirement(ResourceOperation.Delete)).Result;

            if (!authorizationResult.Succeeded)
            {
                throw new ForbidException();
            }

            _dbContext.CryptoInvests.Remove(cryptoInvest);
            _dbContext.SaveChanges();
        }

authorizationResult ciągle zwraca Failed, mimo tego, że wszystko powinno przechodzić. Możliwe, że nie za bardzo rozumiem jak ta metoda do końca działa. Dodam jeszcze kod z klasy UserContextService:

using System.Security.Claims;

namespace InvestWallet.Services
{
    public interface IUserContextService
    {
        ClaimsPrincipal User { get; }
        int? GetUserId { get; }
    }

    public class UserContextService : IUserContextService
    {
        private readonly IHttpContextAccessor _httpContextAccessor;

        public UserContextService(IHttpContextAccessor httpContextAccessor)
        {
            _httpContextAccessor = httpContextAccessor;
        }

        public ClaimsPrincipal User => _httpContextAccessor.HttpContext?.User;

        public int? GetUserId =>
            User is null ? null : (int?)int.Parse(User.FindFirst(c => c.Type == ClaimTypes.NameIdentifier).Value);
    }
}

W Postmanie wartość Tokenu umieszczam w nagłówku. Wydaje mi się, że robię wszystko poprawnie jak widziałem i czytałem w internecie. Jak zatrzymuje się debuggerem to wartość zmiennych są poprawne, tylko ten User typu ClaimsPrincipal nie wiem czy do końca jest dobrze. Za podpowiedzi z wytłumaczeniem z góry wielkie DZIĘKUJĘ :)

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 183 wizyt
pytanie zadane 6 stycznia 2020 w C# przez wo2324 Nowicjusz (200 p.)
0 głosów
1 odpowiedź 533 wizyt
pytanie zadane 21 kwietnia 2022 w C# przez Idezam Początkujący (410 p.)
+1 głos
2 odpowiedzi 942 wizyt
pytanie zadane 20 lipca 2021 w C# przez tomasz12345 Użytkownik (750 p.)

93,324 zapytań

142,323 odpowiedzi

322,390 komentarzy

62,653 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...