AGSSbackend/exportToHTML/Program.cs.html

121 lines
15 KiB
HTML
Raw Normal View History

2025-07-08 23:08:15 +08:00
<html>
<head>
<title>Program.cs</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
.s0 { color: #6c95eb;}
.s1 { color: #d0d0d0;}
.s2 { color: #bdbdbd;}
.s3 { color: #c9a26d;}
.s4 { color: #85c46c; font-style: italic;}
.s5 { color: #ed94c0;}
.ln { color: #808080; font-weight: normal; font-style: normal; }
</style>
</head>
<body bgcolor="#262626">
<table CELLSPACING=0 CELLPADDING=5 COLS=1 WIDTH="100%" BGCOLOR="#606060" >
<tr><td><center>
<font face="Arial, Helvetica" color="#000000">
Program.cs</font>
</center></td></tr></table>
<pre><a name="l1"><span class="ln">1 </span></a><span class="s0">using </span><span class="s1">AGSS</span><span class="s2">.</span><span class="s1">Models</span><span class="s2">;</span>
<a name="l2"><span class="ln">2 </span></a><span class="s0">using </span><span class="s1">AGSS</span><span class="s2">.</span><span class="s1">Models</span><span class="s2">.</span><span class="s1">Template</span><span class="s2">;</span>
<a name="l3"><span class="ln">3 </span></a><span class="s0">using </span><span class="s1">Microsoft</span><span class="s2">.</span><span class="s1">AspNetCore</span><span class="s2">.</span><span class="s1">Authentication</span><span class="s2">.</span><span class="s1">JwtBearer</span><span class="s2">;</span>
<a name="l4"><span class="ln">4 </span></a><span class="s0">using </span><span class="s1">Microsoft</span><span class="s2">.</span><span class="s1">EntityFrameworkCore</span><span class="s2">;</span>
<a name="l5"><span class="ln">5 </span></a><span class="s0">using </span><span class="s1">Microsoft</span><span class="s2">.</span><span class="s1">IdentityModel</span><span class="s2">.</span><span class="s1">Tokens</span><span class="s2">;</span>
<a name="l6"><span class="ln">6 </span></a>
<a name="l7"><span class="ln">7 </span></a>
<a name="l8"><span class="ln">8 </span></a>
<a name="l9"><span class="ln">9 </span></a>
<a name="l10"><span class="ln">10 </span></a>
<a name="l11"><span class="ln">11 </span></a>
<a name="l12"><span class="ln">12 </span></a>
<a name="l13"><span class="ln">13 </span></a>
<a name="l14"><span class="ln">14 </span></a>
<a name="l15"><span class="ln">15 </span></a>
<a name="l16"><span class="ln">16 </span></a>
<a name="l17"><span class="ln">17 </span></a><span class="s1">var builder </span><span class="s2">= </span><span class="s1">WebApplication</span><span class="s2">.</span><span class="s1">CreateBuilder</span><span class="s2">(</span><span class="s1">args</span><span class="s2">);</span>
<a name="l18"><span class="ln">18 </span></a>
<a name="l19"><span class="ln">19 </span></a>
<a name="l20"><span class="ln">20 </span></a>
<a name="l21"><span class="ln">21 </span></a>
<a name="l22"><span class="ln">22 </span></a><span class="s1">var domain </span><span class="s2">= </span><span class="s1">builder</span><span class="s2">.</span><span class="s1">Configuration</span><span class="s2">[</span><span class="s3">&quot;Auth0:Domain&quot;</span><span class="s2">];</span>
<a name="l23"><span class="ln">23 </span></a><span class="s1">var audience </span><span class="s2">=</span><span class="s1">builder</span><span class="s2">.</span><span class="s1">Configuration</span><span class="s2">[</span><span class="s3">&quot;Auth0:Audience&quot;</span><span class="s2">];</span>
<a name="l24"><span class="ln">24 </span></a>
<a name="l25"><span class="ln">25 </span></a><span class="s4">//数据库配置(PGSQL)</span>
<a name="l26"><span class="ln">26 </span></a><span class="s1">builder</span><span class="s2">.</span><span class="s1">Services</span><span class="s2">.</span><span class="s1">AddDbContext</span><span class="s2">&lt;</span><span class="s1">DBContext</span><span class="s2">&gt;(</span><span class="s1">opt =&gt;</span>
<a name="l27"><span class="ln">27 </span></a> <span class="s1">opt</span><span class="s2">.</span><span class="s1">UseNpgsql</span><span class="s2">(</span><span class="s1">builder</span><span class="s2">.</span><span class="s1">Configuration</span><span class="s2">.</span><span class="s1">GetConnectionString</span><span class="s2">(</span><span class="s3">&quot;DBContext&quot;</span><span class="s2">)));</span>
<a name="l28"><span class="ln">28 </span></a>
<a name="l29"><span class="ln">29 </span></a><span class="s4">//鉴权配置</span>
<a name="l30"><span class="ln">30 </span></a><span class="s1">builder</span><span class="s2">.</span><span class="s1">Services</span><span class="s2">.</span><span class="s1">AddAuthentication</span><span class="s2">(</span><span class="s1">JwtBearerDefaults</span><span class="s2">.</span><span class="s1">AuthenticationScheme</span><span class="s2">)</span>
<a name="l31"><span class="ln">31 </span></a> <span class="s2">.</span><span class="s1">AddJwtBearer</span><span class="s2">(</span><span class="s1">options =&gt;</span>
<a name="l32"><span class="ln">32 </span></a> <span class="s2">{</span>
<a name="l33"><span class="ln">33 </span></a> <span class="s1">options</span><span class="s2">.</span><span class="s1">Authority </span><span class="s2">= </span><span class="s1">domain</span><span class="s2">;</span>
<a name="l34"><span class="ln">34 </span></a> <span class="s1">options</span><span class="s2">.</span><span class="s1">Audience </span><span class="s2">= </span><span class="s1">audience</span><span class="s2">;</span>
<a name="l35"><span class="ln">35 </span></a> <span class="s1">options</span><span class="s2">.</span><span class="s1">TokenValidationParameters </span><span class="s2">= </span><span class="s0">new </span><span class="s1">TokenValidationParameters</span>
<a name="l36"><span class="ln">36 </span></a> <span class="s2">{</span>
<a name="l37"><span class="ln">37 </span></a> <span class="s1">ValidateIssuer </span><span class="s2">= </span><span class="s0">true</span><span class="s2">,</span>
<a name="l38"><span class="ln">38 </span></a> <span class="s1">ValidateAudience </span><span class="s2">= </span><span class="s0">true</span><span class="s2">,</span>
<a name="l39"><span class="ln">39 </span></a> <span class="s1">ValidateLifetime </span><span class="s2">= </span><span class="s0">true</span><span class="s2">,</span>
<a name="l40"><span class="ln">40 </span></a> <span class="s1">ValidIssuer </span><span class="s2">= </span><span class="s1">domain</span><span class="s2">,</span>
<a name="l41"><span class="ln">41 </span></a> <span class="s1">ValidAudience </span><span class="s2">= </span><span class="s1">audience</span>
<a name="l42"><span class="ln">42 </span></a> <span class="s2">};</span>
<a name="l43"><span class="ln">43 </span></a> <span class="s1">options</span><span class="s2">.</span><span class="s1">Events </span><span class="s2">= </span><span class="s0">new </span><span class="s1">JwtBearerEvents</span>
<a name="l44"><span class="ln">44 </span></a> <span class="s2">{</span>
<a name="l45"><span class="ln">45 </span></a> <span class="s1">OnChallenge </span><span class="s2">= </span><span class="s1">context =&gt;</span>
<a name="l46"><span class="ln">46 </span></a> <span class="s2">{</span>
<a name="l47"><span class="ln">47 </span></a> <span class="s1">context</span><span class="s2">.</span><span class="s1">HandleResponse</span><span class="s2">();</span>
<a name="l48"><span class="ln">48 </span></a> <span class="s1">context</span><span class="s2">.</span><span class="s1">Response</span><span class="s2">.</span><span class="s1">StatusCode </span><span class="s2">= </span><span class="s5">200</span><span class="s2">;</span>
<a name="l49"><span class="ln">49 </span></a> <span class="s1">context</span><span class="s2">.</span><span class="s1">Response</span><span class="s2">.</span><span class="s1">ContentType </span><span class="s2">= </span><span class="s3">&quot;application/json&quot;</span><span class="s2">;</span>
<a name="l50"><span class="ln">50 </span></a> <span class="s0">return </span><span class="s1">context</span><span class="s2">.</span><span class="s1">Response</span><span class="s2">.</span><span class="s1">WriteAsJsonAsync</span><span class="s2">(</span><span class="s0">new </span><span class="s1">ReturnTemplate</span><span class="s2">(</span><span class="s5">401</span><span class="s2">,</span><span class="s3">&quot;你提供了一个错误的Token所以我们无法验证你的身份唔......&quot;</span><span class="s2">,</span><span class="s0">null</span><span class="s2">));</span>
<a name="l51"><span class="ln">51 </span></a> <span class="s2">}</span>
<a name="l52"><span class="ln">52 </span></a>
<a name="l53"><span class="ln">53 </span></a> <span class="s2">};</span>
<a name="l54"><span class="ln">54 </span></a> <span class="s2">});</span>
<a name="l55"><span class="ln">55 </span></a><span class="s1">builder</span><span class="s2">.</span><span class="s1">Services</span><span class="s2">.</span><span class="s1">AddAuthorization</span><span class="s2">();</span>
<a name="l56"><span class="ln">56 </span></a>
<a name="l57"><span class="ln">57 </span></a>
<a name="l58"><span class="ln">58 </span></a>
<a name="l59"><span class="ln">59 </span></a><span class="s1">builder</span><span class="s2">.</span><span class="s1">Services</span><span class="s2">.</span><span class="s1">AddControllers</span><span class="s2">();</span>
<a name="l60"><span class="ln">60 </span></a><span class="s4">// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle</span>
<a name="l61"><span class="ln">61 </span></a><span class="s1">builder</span><span class="s2">.</span><span class="s1">Services</span><span class="s2">.</span><span class="s1">AddEndpointsApiExplorer</span><span class="s2">();</span>
<a name="l62"><span class="ln">62 </span></a><span class="s1">builder</span><span class="s2">.</span><span class="s1">Services</span><span class="s2">.</span><span class="s1">AddSwaggerGen</span><span class="s2">();</span>
<a name="l63"><span class="ln">63 </span></a>
<a name="l64"><span class="ln">64 </span></a><span class="s1">var app </span><span class="s2">= </span><span class="s1">builder</span><span class="s2">.</span><span class="s1">Build</span><span class="s2">();</span>
<a name="l65"><span class="ln">65 </span></a>
<a name="l66"><span class="ln">66 </span></a><span class="s4">// 配置Swagger</span>
<a name="l67"><span class="ln">67 </span></a><span class="s0">if </span><span class="s2">(</span><span class="s1">app</span><span class="s2">.</span><span class="s1">Environment</span><span class="s2">.</span><span class="s1">IsDevelopment</span><span class="s2">())</span>
<a name="l68"><span class="ln">68 </span></a><span class="s2">{</span>
<a name="l69"><span class="ln">69 </span></a> <span class="s1">app</span><span class="s2">.</span><span class="s1">UseSwagger</span><span class="s2">();</span>
<a name="l70"><span class="ln">70 </span></a> <span class="s1">app</span><span class="s2">.</span><span class="s1">UseSwaggerUI</span><span class="s2">();</span>
<a name="l71"><span class="ln">71 </span></a><span class="s2">}</span>
<a name="l72"><span class="ln">72 </span></a>
<a name="l73"><span class="ln">73 </span></a><span class="s1">app</span><span class="s2">.</span><span class="s1">UseHttpsRedirection</span><span class="s2">();</span>
<a name="l74"><span class="ln">74 </span></a>
<a name="l75"><span class="ln">75 </span></a><span class="s1">app</span><span class="s2">.</span><span class="s1">UseAuthentication</span><span class="s2">();</span>
<a name="l76"><span class="ln">76 </span></a>
<a name="l77"><span class="ln">77 </span></a><span class="s1">app</span><span class="s2">.</span><span class="s1">UseAuthorization</span><span class="s2">();</span>
<a name="l78"><span class="ln">78 </span></a>
<a name="l79"><span class="ln">79 </span></a><span class="s4">//自定义中间件 把404变成200</span>
<a name="l80"><span class="ln">80 </span></a><span class="s1">app</span><span class="s2">.</span><span class="s1">Use</span><span class="s2">(</span><span class="s1">async </span><span class="s2">(</span><span class="s1">context</span><span class="s2">, </span><span class="s1">next</span><span class="s2">) </span><span class="s1">=&gt;</span>
<a name="l81"><span class="ln">81 </span></a><span class="s2">{</span>
<a name="l82"><span class="ln">82 </span></a> <span class="s1">await next</span><span class="s2">(); </span><span class="s4">// 先执行后续中间件</span>
<a name="l83"><span class="ln">83 </span></a>
<a name="l84"><span class="ln">84 </span></a> <span class="s4">// 如果响应是 404 且未修改过</span>
<a name="l85"><span class="ln">85 </span></a> <span class="s0">if </span><span class="s2">(</span><span class="s1">context</span><span class="s2">.</span><span class="s1">Response</span><span class="s2">.</span><span class="s1">StatusCode </span><span class="s2">== </span><span class="s5">404 </span><span class="s2">&amp;&amp; </span><span class="s1">!context</span><span class="s2">.</span><span class="s1">Response</span><span class="s2">.</span><span class="s1">HasStarted</span><span class="s2">)</span>
<a name="l86"><span class="ln">86 </span></a> <span class="s2">{</span>
<a name="l87"><span class="ln">87 </span></a> <span class="s1">context</span><span class="s2">.</span><span class="s1">Response</span><span class="s2">.</span><span class="s1">StatusCode </span><span class="s2">= </span><span class="s5">200</span><span class="s2">; </span><span class="s4">// 改为 200</span>
<a name="l88"><span class="ln">88 </span></a> <span class="s1">context</span><span class="s2">.</span><span class="s1">Response</span><span class="s2">.</span><span class="s1">ContentType </span><span class="s2">= </span><span class="s3">&quot;application/json&quot;</span><span class="s2">;</span>
<a name="l89"><span class="ln">89 </span></a>
<a name="l90"><span class="ln">90 </span></a> <span class="s4">// 自定义响应内容</span>
<a name="l91"><span class="ln">91 </span></a> <span class="s1">await context</span><span class="s2">.</span><span class="s1">Response</span><span class="s2">.</span><span class="s1">WriteAsJsonAsync</span><span class="s2">(</span><span class="s0">new </span><span class="s1">ReturnTemplate</span><span class="s2">(</span><span class="s5">404</span><span class="s2">,</span><span class="s3">&quot;未能找到资源吖!&quot;</span><span class="s2">,</span><span class="s0">null</span><span class="s2">));</span>
<a name="l92"><span class="ln">92 </span></a> <span class="s2">}</span>
<a name="l93"><span class="ln">93 </span></a><span class="s2">});</span>
<a name="l94"><span class="ln">94 </span></a>
<a name="l95"><span class="ln">95 </span></a><span class="s4">//控制器路由</span>
<a name="l96"><span class="ln">96 </span></a><span class="s1">app</span><span class="s2">.</span><span class="s1">MapControllers</span><span class="s2">();</span>
<a name="l97"><span class="ln">97 </span></a>
<a name="l98"><span class="ln">98 </span></a><span class="s1">app</span><span class="s2">.</span><span class="s1">Run</span><span class="s2">();</span>
<a name="l99"><span class="ln">99 </span></a></pre>
</body>
</html>