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

Bagaimana untuk Melaksanakan Pengesahan Berasaskan Token dalam Teras ASP.NET untuk Aplikasi AngularJS?

DDD
Lepaskan: 2024-12-27 18:53:12
asal
215 orang telah melayarinya

How to Implement Token-Based Authentication in ASP.NET Core for an AngularJS Application?

Pengesahan Berasaskan Token dalam Teras ASP.NET


Senario

Bersiaplah aplikasi Teras ASP.NET di mana anda ingin melaksanakan berasaskan token pengesahan untuk aplikasi AngularJS. Aplikasi AngularJS akan membuat permintaan ke URL tertentu yang menghantar nama pengguna dan kata laluan. API Web akan membenarkan pengguna dan mengembalikan token akses, yang akan digunakan oleh apl AngularJS dalam permintaan seterusnya.

Cara Mengkonfigurasi Pengesahan Berasaskan Token dalam ASP.NET Core

Untuk mengkonfigurasi aplikasi API Web Teras ASP.NET anda untuk berasaskan token pengesahan:

1. Tentukan Pemalar

Buat pemalar untuk khalayak dan pengeluar token:

const string TokenAudience = "Myself";
const string TokenIssuer = "MyProject";
Salin selepas log masuk

2. Konfigurasi Perkhidmatan

Dalam fail Startup.cs anda, tambahkan yang berikut pada kaedah ConfigureServices:

var keySecret = authenticationConfiguration["JwtSigningKey"];
var symmetricKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(keySecret));

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;
    });
Salin selepas log masuk

3. Sediakan Pengesahan

Tambah baris berikut dalam fail Startup.cs anda, sebelum sebarang perisian tengah yang memerlukan maklumat pengguna:

app.UseAuthentication();
Salin selepas log masuk

4. Bina Token

Buat kelas untuk mengendalikan penjanaan token JWT:

class JwtSignInHandler
{
    public const string TokenAudience = "Myself";
    public const string TokenIssuer = "MyProject";
    private readonly SymmetricSecurityKey key;

    public JwtSignInHandler(SymmetricSecurityKey symmetricKey)
    {
        this.key = symmetricKey;
    }

    public string BuildJwt(ClaimsPrincipal principal)
    {
        var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

        var token = new JwtSecurityToken(
            issuer: TokenIssuer,
            audience: TokenAudience,
            claims: principal.Claims,
            expires: DateTime.Now.AddMinutes(20),
            signingCredentials: creds
        );

        return new JwtSecurityTokenHandler().WriteToken(token);
    }
}
Salin selepas log masuk

5. Kembalikan Token

Dalam tindakan pengawal di mana anda ingin memulangkan token, panggil kaedah BuildJwt:

[HttpPost]
public string AnonymousSignIn([FromServices] JwtSignInHandler tokenFactory)
{
    var principal = new System.Security.Claims.ClaimsPrincipal(new[]
    {
        new System.Security.Claims.ClaimsIdentity(new[]
        {
            new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Name, "Demo User")
        })
    });
    return tokenFactory.BuildJwt(principal);
}
Salin selepas log masuk

Dengan langkah ini, API Web Teras ASP.NET anda aplikasi akan dikonfigurasikan untuk menggunakan pengesahan berasaskan token, membolehkan aplikasi AngularJS anda mengakses sumber yang dilindungi dengan selamat.

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

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan