Ich habe bereits das Token im lokalen Speicher und bereit, an die Web-API zu senden, wo der Controller oder die Methode hat Autorisieren Attribut dies ist die Blazor Client, Wie sende ich das Token?
var token = Storage["token"];
await http.GetJsonAsync<string[]>("/api/authorizedController");
Und wie bekomme ich das Token auf der API? Kommt es automatisch vor oder muss ich etwas tun?
[Authorize]
[Route("api/[controller]")]
Mate, Sie benötigen auch Code auf dem Server, um das Bearer-Token in Ihrem Anfrage-Header bei jeder Anfrage zu validieren.
Versuche dies:
[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();
}