AGSSbackend/exportToHTML/Program.cs.html

121 lines
15 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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>