JWT API

Minimal API 文档

此API具有两个访问策略,管理员员工,通过用户进行令牌检查

API设置

添加授权策略

builder.Services.AddAuthorization(options => {
  <!-- Adicione políticas aqui -->
options.AddPolicy("Admin", policy => policy.RequireRole("manager"));
options.AddPolicy("Employee", policy => policy.RequireRole("employee"));
}); 

用户身份验证端点

app.MapPost("/login", (User model) =>
{
    //implemente mais validações ou uma lógica diferente, caso use em produção
    var user = UserRepository.Get(model.Username, model.Password);
    if (user == null)
        return Results.NotFound(new
        {
            message = "Usuário ou senha inválidos!"
        });

    // se tudo ocorre certo, gera o token
    var token = TokenService.GenerateToken(user);

    // esconde a senha no body da resposta
    user.Password = "";

    return Results.Ok(new
    {
        user,
        token
    });
});

匿名方法

app.MapGet("/anonymous", () => { Results.Ok("anonymous"); }).AllowAnonymous();

验证已认证用户

app.MapGet("/authenticated", (ClaimsPrincipal user) =>
{
  // altere o retorno para o seu propósito
  Results.Ok(new
  {
      message = $"Authenticated as {user.Identity.Name}"
  });
}).RequireAuthorization();

按策略访问

app.MapGet("/admin", (ClaimsPrincipal user) =>
{
  // experimente retorna uma view diferente ou redirecionar para um painel  
    Results.Ok(new
    {
        message = $"Authenticated as {user.Identity.Name}"
    });
}
).RequireAuthorization("Admin");

app.MapGet("/employee", (ClaimsPrincipal user) =>
{
  // altere o retorno para o seu propósito
    Results.Ok(new
    {
        message = $"Authenticated as {user.Identity.Name}"
    });
}
).RequireAuthorization("Employee"); 

端点列表

要使用实际端点进行测试,请访问 https://minimalapijwt.azurewebsites.net/

1. "/" => um JSON com informações do repositório e do autor.

2. "/docs" => outro JSON com os metódos, caso do usuário queira tratar as informações exibidas em outra aplicação.

3. "/login" => POST aceitando apenas usuários registrados no arquivo *UserRepository.cs*.

4. "/admin" => checa o token de autenticação do *admin* e retorna 200 ou 403.

5. "/employee" => checa o token de autenticação do *employee* e retorna 200 ou 403.

构建

在localhost上运行项目

Dotnet watch 会观察代码更改,并在必要时自动进行构建。

  dotnet watch --project . run

如果出现错误

删除IDE的设置文件夹。

Exclua **.vs**, caso use o visual studio 

Exclua **.vscode** caso use o visual studio code

对应用程序执行清理,然后执行构建

dotnet clean 

dotnet run

运行Flutter应用程序

要在手机或Android模拟器上运行应用程序,需要检查最低版本

  1. Flutter 3.10.5
  2. Dart 3.0.5
  3. SDK “>=3.0.0-290.0.dev <4.0.0”

检查后,更新软件包

flutter run pub get

然后,在选定的设备上运行。

应用程序文档

GitHub

查看 Github