Resumo: Este artigo discutirá como adicionar reivindicações de usuário dinamicamente em um aplicativo ASP.NET Core usando o ASP.NET Identity e cookies. As reivindicações de usuário fornecem um mecanismo flexível para controlar o acesso a recursos com base em atributos específicos do usuário. Vamos explorar como adicionar e gerenciar reivindicações em tempo de execução, permitindo a personalização das permissões de acesso para usuários individuais.
Introdução
A segurança é um aspecto fundamental de qualquer aplicativo web. O ASP.NET Core fornece o ASP.NET Identity como um sistema de autenticação e autorização flexível e poderoso. Uma das principais funcionalidades do ASP.NET Identity é a capacidade de adicionar reivindicações de usuário. As reivindicações são pares chave-valor que representam atributos específicos de um usuário autenticado, como função, idade, permissões, etc.
Neste artigo, vamos explorar como adicionar reivindicações de usuário dinamicamente em um aplicativo ASP.NET Core usando cookies para armazenar as informações de autenticação.
Passo 1: Configurando o ASP.NET Identity
Antes de começarmos a adicionar reivindicações dinamicamente, precisamos configurar o ASP.NET Identity no nosso aplicativo. Isso envolve a definição de entidades de usuário, como User e Role, além de configurar os serviços de autenticação e autorização.
Passo 2: Adicionando reivindicações ao usuário
Uma vez configurado o ASP.NET Identity, podemos adicionar reivindicações a um usuário autenticado. O ASP.NET Identity fornece métodos simples para adicionar, remover e verificar reivindicações. Por exemplo, para adicionar uma reivindicação ao usuário atual, podemos usar o seguinte código:
csharp
Copy code
var user = await _userManager.GetUserAsync(User);
await _userManager.AddClaimAsync(user, new Claim(“customClaim”, “value”));
Nesse exemplo, estamos adicionando uma reivindicação chamada “customClaim” com o valor “value” ao usuário atualmente autenticado.
Passo 3: Armazenando reivindicações em cookies
Para tornar as reivindicações disponíveis em solicitações subsequentes, podemos armazená-las em cookies. Os cookies são uma forma conveniente de manter o estado da autenticação no lado do cliente. Podemos usar a classe CookieAuthenticationOptions para configurar como as reivindicações são serializadas e deserializadas em cookies.
csharp
Copy code
services.Configure<CookieAuthenticationOptions>(options =>
{
options.Events = new CookieAuthenticationEvents
{
OnSigningIn = async context =>
{
var user = context.Principal.Identity as ClaimsIdentity;
if (user != null)
{
var customClaim = user.FindFirst(“customClaim”);
if (customClaim != null)
{
var claims = new List<Claim> { customClaim };
var claimsIdentity = new ClaimsIdentity(claims);
context.CookieOptions.Expires = DateTimeOffset.UtcNow.AddHours(1);
context.Principal.AddIdentity(claimsIdentity);
}
}
await Task.CompletedTask;
}
};
});
Nesse trecho de código, estamos configurando o evento OnSigningIn para adicionar a reivindicação “customClaim” ao cookie de autenticação. A reivindicação é obtida do usuário atualmente autenticado e adicionada ao cookie, que expira uma hora após a criação.
Conclusão
Adicionar reivindicações de usuário dinamicamente em um aplicativo ASP.NET Core usando o ASP.NET Identity e cookies pode ser uma solução poderosa para personalizar as permissões de acesso para usuários individuais. Neste artigo, discutimos os passos necessários para adicionar reivindicações e armazená-las em cookies, permitindo que os usuários tenham acesso a recursos com base em atributos específicos. Essa abordagem oferece flexibilidade e controle granular sobre as permissões de usuário, melhorando a segurança e a experiência do usuário em aplicativos web ASP.NET Core.