亚洲乱色熟女一区二区三区丝袜,天堂√中文最新版在线,亚洲精品乱码久久久久久蜜桃图片,香蕉久久久久久av成人,欧美丰满熟妇bbb久久久

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C#WebApi項(xiàng)目中實(shí)現(xiàn)Token驗(yàn)證

admin
2025年7月8日 14:19 本文熱度 1026
這里記錄一下WebAPI 項(xiàng)目中實(shí)現(xiàn) Token 驗(yàn)證,通常使用基于 JWT (JSON Web Token) 的身份驗(yàn)證。以下是完整的實(shí)現(xiàn)步驟:

1. 安裝必要的 NuGet 包

首先,安裝所需的 NuGet 包:

Install-Package System.IdentityModel.Tokens.Jwt -Version 5.2.2Install-Package Microsoft.Owin.Security.Jwt -Version 4.0.1Install-Package Microsoft.Owin.Host.SystemWeb -Version 4.0.1

2. 配置 OWIN Startup 類

添加一個(gè) OWIN Startup 類來(lái)配置 JWT 認(rèn)證:

using Microsoft.IdentityModel.Tokens;using Microsoft.Owin;using Microsoft.Owin.Security.Jwt;using Owin;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Web;using System.Web.Configuration;
[assembly: OwinStartup(typeof(WebApi.Startup))]namespace WebApi{    public class Startup    {        public void Configuration(IAppBuilder app)        {            var issuer = WebConfigurationManager.AppSettings["JwtIssuer"];            var audience = WebConfigurationManager.AppSettings["JwtAudience"];            var secret = WebConfigurationManager.AppSettings["JwtSecret"];
            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret));
            app.UseJwtBearerAuthentication(                new JwtBearerAuthenticationOptions                {                    AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Active,                    TokenValidationParameters = new TokenValidationParameters()                    {                        ValidateIssuer = true,                        ValidateAudience = true,                        ValidateIssuerSigningKey = true,                        ValidIssuer = issuer,                        ValidAudience = audience,                        IssuerSigningKey = key,                        ClockSkew = TimeSpan.Zero                    }                });        }    }}

3. 添加配置到 Web.config

在 Web.config 的 <appSettings> 部分添加以下配置:

	<add key="JwtIssuer" value="TestApiServer"/>	<add key="JwtAudience" value="TestWebApp"/>	<add key="JwtSecret" value="bXlfdGVzdF9zZWNyZXRfa2V5XzEyMzQ1Njc4OTA"/>	<add key="JwtExpireMinutes" value="30"/>

4. 創(chuàng)建 Token 生成服務(wù)

創(chuàng)建一個(gè)服務(wù)類來(lái)生成 JWT 令牌:

using Microsoft.IdentityModel.Tokens;using System;using System.Collections.Generic;using System.IdentityModel.Tokens.Jwt;using System.Linq;using System.Security.Claims;using System.Text;using System.Web;using System.Web.Configuration;
namespace WebApi.Tools{    public class TokenService    {        public static string GenerateToken(string username)        {            var issuer = WebConfigurationManager.AppSettings["JwtIssuer"];            var audience = WebConfigurationManager.AppSettings["JwtAudience"];            var secret = WebConfigurationManager.AppSettings["JwtSecret"];            var expireMinutes = Convert.ToInt32(WebConfigurationManager.AppSettings["JwtExpireMinutes"]);
            var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret));            var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
            var claims = new[]            {            new Claim(JwtRegisteredClaimNames.Sub, username),            new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),            new Claim(ClaimTypes.Name, username)            // 可以添加更多聲明(claims)如角色等        };
            var token = new JwtSecurityToken(                issuer: issuer,                audience: audience,                claims: claims,                expires: DateTime.Now.AddMinutes(expireMinutes),                signingCredentials: credentials            );
            return new JwtSecurityTokenHandler().WriteToken(token);        }    }}

5. 創(chuàng)建登錄 API 控制器

創(chuàng)建一個(gè)控制器來(lái)處理用戶登錄并返回 Token:

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Http;using WebApi.Tools;
namespace WebApi.Controllers{    public class AccountController : ApiController    {        [HttpPost]        [Route("api/account/login")]        public IHttpActionResult Login(LoginModel model)        {            // 這里應(yīng)該驗(yàn)證用戶名和密碼            // 示例代碼,實(shí)際應(yīng)用中應(yīng)該從數(shù)據(jù)庫(kù)驗(yàn)證            if (model.Username == "admin" && model.Password == "password")            {                var token = TokenService.GenerateToken(model.Username);                return Ok(new { Token = token });            }
            return Unauthorized();        }    }
    public class LoginModel    {        public string Username { getset; }        public string Password { getset; }    }}

6. 保護(hù)需要認(rèn)證的 API

在需要認(rèn)證的控制器或方法上添加 [Authorize] 屬性:

7. 測(cè)試 API

1.直接調(diào)用會(huì)提示已拒絕為此請(qǐng)求授權(quán)
2.調(diào)用登錄 API 獲取 Token:
3.然后使用返回的 Token 訪問(wèn)受保護(hù)的 API:
Headers: Authorization: Bearer your_token_here
閱讀原文:https://mp.weixin.qq.com/s/wV-42HN7nugHLxXFLfEtJQ


該文章在 2025/7/8 16:26:44 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved