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模拟器上运行应用程序,需要检查最低版本
- Flutter 3.10.5
- Dart 3.0.5
- SDK “>=3.0.0-290.0.dev <4.0.0”
检查后,更新软件包
flutter run pub get
然后,在选定的设备上运行。