Ho già il token nella memoria locale e pronto per l'invio alla web api dove il controller o il metodo ha it Attributo Autorizza questo è il client Blazor, Come posso inviare il token?
var token = Storage["token"];
await http.GetJsonAsync<string[]>("/api/authorizedController");
E come posso ricevere il token sull'api? Succede automaticamente o devo fare qualcosa?
[Authorize]
[Route("api/[controller]")]
Compagno, hai anche bisogno del codice sul server per convalidare il token al portatore nell'intestazione della richiesta su ogni richiesta.
Prova questo:
[Route("api/[controller]")]
[Authorize]
public class AutorizedController: Controller
public void ConfigureServices(IServiceCollection services)
{
services.AddIdentityCore<IdentityUser>()
.AddEntityFrameworkStores<StoreContext>();
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(cfg =>
{
cfg.TokenValidationParameters = new TokenValidationParameters()
{
ValidateIssuer = true,
ValidIssuer = _config["Security:Tokens:Issuer"],
ValidateAudience = true,
ValidAudience = _config["Security:Tokens:Audience"],
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Security:Tokens:Key"])),
};
});
services.AddDbContext<StoreContext>();
services.AddMvc();
}