После курса по созданию веб-сайта - не могу понять блок кода - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь выучить ASP. NET.

Я следую курсу, но кое-что не понимаю.

Вот код в контроллере:

[HttpPost("login")]
        public async Task<IActionResult> Login(UserForLoginDto userForLoginDto)
        {
            var userFromRepo = await _repo.Login(userForLoginDto.Username.ToLower(), userForLoginDto.Password);
            if (userFromRepo == null)
            {
                return Unauthorized();
            }

            var claims = new[]
            {
                new Claim(ClaimTypes.NameIdentifier, userFromRepo.Id.ToString()),
                new Claim(ClaimTypes.Name, userFromRepo.Username)
            };

            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config.GetSection("AppSetings:Token").Value));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);
v
            var tokenDescriptor = new SecurityTokenDescriptor{
                Subject = new ClaimsIdentity(claims),
                Expires = DateTime.Now.AddDays(1),
                SigningCredentials = creds
            };

            var tokenHandler = new JwtSecurityTokenHandler();
            var token = tokenHandler.CreateToken(tokenDescriptor);
            
            return Ok(new {
                token = tokenHandler.WriteToken(token)
            });
        }

Я не могу понять массив требований. Некоторое время я искал в Интернете, но не понял. Зачем он мне нужен и как он работает?

Я нашел это весьма полезным, но до сих пор не

Каковы претензии в ASP . NET Идентичность

полностью это понимаю.

Кто-нибудь может помочь мне понять эту концепцию? Зачем он нам нужен и как работает?

Спасибо.

Ответы [ 2 ]

1 голос
/ 01 августа 2020

Лучший пример - водительские права. Водительское удостоверение может иметь следующие требования:

  • Имя
  • День рождения
  • Разрешено водить автомобиль
  • Разрешено водить мотоцикл
  • Разрешено нырять на грузовике
  • Разрешено погружать автобус
  • ...

Когда полиция останавливает вас в вашем автомобиле, она проверит, если вы имеют право управлять определенным транспортным средством c и доверять эмитенту, прежде чем разрешить вам продолжить путешествие. Чтобы получить дополнительную информацию, вы можете прочитать эту статью .

То же самое касается авторизации на основе требований. У конкретного пользователя c могут быть разные утверждения, которые могут предоставить ему доступ к различным функциям.

Когда вы подключаетесь к провайдеру авторизации, например, Facebook или Google, вы можете запросить конкретные c утверждения, не очень необходимые приложения дата рождения для работы, в то время как некоторым другим она может понадобиться для проверки совершеннолетия пользователя.

1 голос
/ 01 августа 2020

Какие претензии? Предположим, вы работаете в пограничной службе и ваша работа заключается в выдаче иммиграционного разрешения иммигрантам. Прежде чем вы выдадите кому-либо разрешение, этот человек должен иметь возможность идентифицировать себя, что он действительно принадлежит к стране, из которой он якобы приехал. Это лицо может принести свое свидетельство о рождении, национальную идентификационную карту, визу или любое другое разрешенное средство идентификации. Эти вещи называются претензиями. Человек должен показать вам что-то, что он должен доказать вам, что он действительно из этой страны. Иногда достаточно одной предъявленной претензии. В другой стране они могут сказать, что вы предоставляете по крайней мере три требования (т.е. средства идентификации), прежде чем они выдадут вам это разрешение, просто чтобы усложнить задачу для стран с более высокими проблемами безопасности.

Этот массив может просто иметь Одна заявка внутри, вы можете выбрать столько заявок, сколько вы sh, и установить другие правила внутри, чтобы сделать вашу систему более жесткой и безопасной. Выбор за вами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...