Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Melaksanakan Pengesahan Berasaskan Token dengan AngularJS dan Teras ASP.NET?

Bagaimana untuk Melaksanakan Pengesahan Berasaskan Token dengan AngularJS dan Teras ASP.NET?

Susan Sarandon
Susan Sarandonasal
2024-12-26 09:12:10528semak imbas

How to Implement Token-Based Authentication with AngularJS and ASP.NET Core?

Pengesahan Berasaskan Token dalam Teras ASP.NET

Senario:

Aplikasi AngularJS meminta token daripada WebApi oleh menyediakan nama pengguna dan kata laluan. Selepas kebenaran berjaya, WebApi mengembalikan token akses untuk digunakan oleh apl AngularJS dalam permintaan seterusnya.

Konfigurasi:

Startup.cs:

Konfigurasikan pengesahan perkhidmatan:

services.AddTransient(_ => new JwtSignInHandler(symmetricKey));

services.AddAuthentication(options =>
{
    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(options =>
{
    options.TokenValidationParameters.ValidateIssuerSigningKey = true;
    options.TokenValidationParameters.IssuerSigningKey = symmetricKey;
    options.TokenValidationParameters.ValidAudience = JwtSignInHandler.TokenAudience;
    options.TokenValidationParameters.ValidIssuer = JwtSignInHandler.TokenIssuer;
});

Perisian Tengah:

app.UseAuthentication();

Dasar Kebenaran (pilihan):

services.AddAuthorization(auth =>
{
    auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()
        .AddAuthenticationTypes(JwtBearerDefaults.AuthenticationType)
        .RequireAuthenticatedUser().Build());
});

Penjanaan Token:

public class JwtSignInHandler
{
    public string BuildJwt(ClaimsPrincipal principal)
    {
        // Create credentials and token
        var token = new JwtSecurityToken(
            issuer: TokenIssuer,
            audience: TokenAudience,
            claims: principal.Claims,
            expires: DateTime.Now.AddMinutes(20),
            signingCredentials: creds
        );
        
        return new JwtSecurityTokenHandler().WriteToken(token);
    }
}

[HttpPost]
public string AnonymousSignIn([FromServices] JwtSignInHandler tokenFactory)
{
    // Create claims principal
    var principal = new ClaimsPrincipal(new[]
    {
        new ClaimsIdentity(new[]
        {
            new Claim(ClaimTypes.Name, "Demo User")
        })
    });
    return tokenFactory.BuildJwt(principal);
}

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pengesahan Berasaskan Token dengan AngularJS dan Teras ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn