Skip to content

Commit 9fd22f0

Browse files
committed
Site updated: 2024-12-29 14:53:45
1 parent 6ac25e9 commit 9fd22f0

6 files changed

Lines changed: 124 additions & 160 deletions

File tree

ComputerScience/笔记/SpringBoot常用框架/index.html

Lines changed: 7 additions & 10 deletions
Large diffs are not rendered by default.

ComputerScience/笔记/SpringBoot笔记/index.html

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@
2020

2121
<script class="next-config" data-name="main" type="application/json">{"hostname":"simuleite.github.io","root":"/","images":"/images","scheme":"Muse","darkmode":false,"version":"8.21.0","exturl":false,"sidebar":{"position":"left","width_expanded":320,"width_dual_column":240,"display":"post","padding":18,"offset":12},"hljswrap":true,"copycode":{"enable":false,"style":null},"fold":{"enable":false,"height":500},"bookmark":{"enable":false,"color":"#222","save":"auto"},"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"stickytabs":false,"motion":{"enable":true,"async":false,"transition":{"menu_item":"fadeInDown","post_block":"fadeIn","post_header":"fadeInDown","post_body":"fadeInDown","coll_header":"fadeInLeft","sidebar":"fadeInUp"}},"i18n":{"placeholder":"搜索...","empty":"没有找到任何搜索结果:${query}","hits_time":"找到 ${hits} 个搜索结果(用时 ${time} 毫秒)","hits":"找到 ${hits} 个搜索结果"},"path":"/search.xml","localsearch":{"enable":true,"top_n_per_article":1,"unescape":false,"preload":false}}</script><script src="/js/config.js"></script>
2222

23-
<meta name="description" content="参考资料 柏码知识库 application.properties Property形式 server.port&#x3D;80 &#x2F;&#x2F; 端口号aruge.arugement&#x3D;value @Value(&quot;&#123;argue.argument&#125;&quot;)String argu; YAML形式 server: port: 80spring: datasource">
23+
<meta name="description" content="application.properties Property形式 server.port&#x3D;80 &#x2F;&#x2F; 端口号aruge.arugement&#x3D;value @Value(&quot;&#123;argue.argument&#125;&quot;)String argu; YAML形式 server: port: 80spring: datasource: url:">
2424
<meta property="og:type" content="article">
2525
<meta property="og:title" content="SpringBoot笔记">
2626
<meta property="og:url" content="http://simuleite.github.io/ComputerScience/%E7%AC%94%E8%AE%B0/SpringBoot%E7%AC%94%E8%AE%B0/index.html">
2727
<meta property="og:site_name" content="SMULET&#39;s BLOG">
28-
<meta property="og:description" content="参考资料 柏码知识库 application.properties Property形式 server.port&#x3D;80 &#x2F;&#x2F; 端口号aruge.arugement&#x3D;value @Value(&quot;&#123;argue.argument&#125;&quot;)String argu; YAML形式 server: port: 80spring: datasource">
28+
<meta property="og:description" content="application.properties Property形式 server.port&#x3D;80 &#x2F;&#x2F; 端口号aruge.arugement&#x3D;value @Value(&quot;&#123;argue.argument&#125;&quot;)String argu; YAML形式 server: port: 80spring: datasource: url:">
2929
<meta property="og:locale" content="zh_CN">
3030
<meta property="article:published_time" content="2024-12-20T16:00:00.000Z">
31-
<meta property="article:modified_time" content="2024-12-24T10:52:16.539Z">
31+
<meta property="article:modified_time" content="2024-12-29T06:53:23.364Z">
3232
<meta property="article:author" content="SIMULEITE">
3333
<meta property="article:tag" content="笔记">
3434
<meta name="twitter:card" content="summary">
@@ -138,7 +138,7 @@
138138
<div class="sidebar-panel-container">
139139
<!--noindex-->
140140
<div class="post-toc-wrap sidebar-panel">
141-
<div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-1"><a class="nav-link" href="#%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99"><span class="nav-text"> 参考资料</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#applicationproperties"><span class="nav-text"> application.properties</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#property%E5%BD%A2%E5%BC%8F"><span class="nav-text"> Property形式</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#yaml%E5%BD%A2%E5%BC%8F"><span class="nav-text"> YAML形式</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#package"><span class="nav-text"> Package</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#jar"><span class="nav-text"> JAR</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#war"><span class="nav-text"> WAR</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#graalvm-native-exe"><span class="nav-text"> GraalVM Native EXE</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#slf4j"><span class="nav-text"> SLF4J</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E6%B5%8B%E8%AF%95-%E7%94%9F%E6%88%90%E7%8E%AF%E5%A2%83%E9%9A%94%E7%A6%BB"><span class="nav-text"> 测试-生成环境隔离</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#maven%E7%8B%AC%E7%AB%8B%E6%89%93%E5%8C%85%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE"><span class="nav-text"> Maven独立打包环境配置</span></a></li></ol></li></ol></div>
141+
<div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-1"><a class="nav-link" href="#applicationproperties"><span class="nav-text"> application.properties</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#property%E5%BD%A2%E5%BC%8F"><span class="nav-text"> Property形式</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#yaml%E5%BD%A2%E5%BC%8F"><span class="nav-text"> YAML形式</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#package"><span class="nav-text"> Package</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#jar"><span class="nav-text"> JAR</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#war"><span class="nav-text"> WAR</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#graalvm-native-exe"><span class="nav-text"> GraalVM Native EXE</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#slf4j"><span class="nav-text"> SLF4J</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E6%B5%8B%E8%AF%95-%E7%94%9F%E6%88%90%E7%8E%AF%E5%A2%83%E9%9A%94%E7%A6%BB"><span class="nav-text"> 测试-生成环境隔离</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#maven%E7%8B%AC%E7%AB%8B%E6%89%93%E5%8C%85%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE"><span class="nav-text"> Maven独立打包环境配置</span></a></li></ol></li></ol></div>
142142
</div>
143143
<!--/noindex-->
144144

@@ -231,7 +231,7 @@ <h1 class="post-title" itemprop="name headline">
231231
<i class="far fa-calendar-check"></i>
232232
</span>
233233
<span class="post-meta-item-text">更新于</span>
234-
<time title="修改时间:2024-12-24 18:52:16" itemprop="dateModified" datetime="2024-12-24T18:52:16+08:00">2024-12-24</time>
234+
<time title="修改时间:2024-12-29 14:53:23" itemprop="dateModified" datetime="2024-12-29T14:53:23+08:00">2024-12-29</time>
235235
</span>
236236

237237

@@ -243,11 +243,7 @@ <h1 class="post-title" itemprop="name headline">
243243

244244

245245

246-
<div class="post-body" itemprop="articleBody"><h1 id="参考资料"><a class="markdownIt-Anchor" href="#参考资料"></a> 参考资料</h1>
247-
<ol>
248-
<li><a target="_blank" rel="noopener" href="https://www.itbaima.cn/document/0k66v5r6slsfuog4">柏码知识库</a></li>
249-
</ol>
250-
<h1 id="applicationproperties"><a class="markdownIt-Anchor" href="#applicationproperties"></a> application.properties</h1>
246+
<div class="post-body" itemprop="articleBody"><h1 id="applicationproperties"><a class="markdownIt-Anchor" href="#applicationproperties"></a> application.properties</h1>
251247
<h2 id="property形式"><a class="markdownIt-Anchor" href="#property形式"></a> Property形式</h2>
252248
<figure class="highlight properties"><table><tr><td class="code"><pre><span class="line"><span class="attr">server.port</span>=<span class="string">80 // 端口号</span></span><br><span class="line"><span class="attr">aruge.arugement</span>=<span class="string">value</span></span><br></pre></td></tr></table></figure>
253249
<figure class="highlight java"><table><tr><td class="code"><pre><span class="line"><span class="meta">@Value(&quot;&#123;argue.argument&#125;&quot;)</span></span><br><span class="line">String argu;</span><br></pre></td></tr></table></figure>

ComputerScience/笔记/前后端分离/index.html

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@
2020

2121
<script class="next-config" data-name="main" type="application/json">{"hostname":"simuleite.github.io","root":"/","images":"/images","scheme":"Muse","darkmode":false,"version":"8.21.0","exturl":false,"sidebar":{"position":"left","width_expanded":320,"width_dual_column":240,"display":"post","padding":18,"offset":12},"hljswrap":true,"copycode":{"enable":false,"style":null},"fold":{"enable":false,"height":500},"bookmark":{"enable":false,"color":"#222","save":"auto"},"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"stickytabs":false,"motion":{"enable":true,"async":false,"transition":{"menu_item":"fadeInDown","post_block":"fadeIn","post_header":"fadeInDown","post_body":"fadeInDown","coll_header":"fadeInLeft","sidebar":"fadeInUp"}},"i18n":{"placeholder":"搜索...","empty":"没有找到任何搜索结果:${query}","hits_time":"找到 ${hits} 个搜索结果(用时 ${time} 毫秒)","hits":"找到 ${hits} 个搜索结果"},"path":"/search.xml","localsearch":{"enable":true,"top_n_per_article":1,"unescape":false,"preload":false}}</script><script src="/js/config.js"></script>
2222

23-
<meta name="description" content="参考资料 柏码知识库 1.0 Session 有状态:用户请求接口 -&gt; 从Session中读取用户信息 -&gt; 根据当前的用户来处理业务 -&gt; 返回 缺点:不支持分布式 2.0 Token 无状态:用户携带Token请求接口 -&gt; 从请求中获取用户信息 -&gt; 根据当前的用户来处理业务 -&gt; 返回 &lt;dependency&gt; &lt;g">
23+
<meta name="description" content="1.0 Session 有状态:用户请求接口 -&gt; 从Session中读取用户信息 -&gt; 根据当前的用户来处理业务 -&gt; 返回 缺点:不支持分布式 2.0 Token 无状态:用户携带Token请求接口 -&gt; 从请求中获取用户信息 -&gt; 根据当前的用户来处理业务 -&gt; 返回 &lt;dependency&gt; &lt;groupId&gt;com.">
2424
<meta property="og:type" content="article">
2525
<meta property="og:title" content="前后端分离">
2626
<meta property="og:url" content="http://simuleite.github.io/ComputerScience/%E7%AC%94%E8%AE%B0/%E5%89%8D%E5%90%8E%E7%AB%AF%E5%88%86%E7%A6%BB/index.html">
2727
<meta property="og:site_name" content="SMULET&#39;s BLOG">
28-
<meta property="og:description" content="参考资料 柏码知识库 1.0 Session 有状态:用户请求接口 -&gt; 从Session中读取用户信息 -&gt; 根据当前的用户来处理业务 -&gt; 返回 缺点:不支持分布式 2.0 Token 无状态:用户携带Token请求接口 -&gt; 从请求中获取用户信息 -&gt; 根据当前的用户来处理业务 -&gt; 返回 &lt;dependency&gt; &lt;g">
28+
<meta property="og:description" content="1.0 Session 有状态:用户请求接口 -&gt; 从Session中读取用户信息 -&gt; 根据当前的用户来处理业务 -&gt; 返回 缺点:不支持分布式 2.0 Token 无状态:用户携带Token请求接口 -&gt; 从请求中获取用户信息 -&gt; 根据当前的用户来处理业务 -&gt; 返回 &lt;dependency&gt; &lt;groupId&gt;com.">
2929
<meta property="og:locale" content="zh_CN">
3030
<meta property="article:published_time" content="2024-12-26T16:00:00.000Z">
31-
<meta property="article:modified_time" content="2024-12-29T03:19:27.825Z">
31+
<meta property="article:modified_time" content="2024-12-29T06:53:27.039Z">
3232
<meta property="article:author" content="SIMULEITE">
3333
<meta property="article:tag" content="笔记">
3434
<meta name="twitter:card" content="summary">
@@ -138,7 +138,7 @@
138138
<div class="sidebar-panel-container">
139139
<!--noindex-->
140140
<div class="post-toc-wrap sidebar-panel">
141-
<div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-1"><a class="nav-link" href="#%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99"><span class="nav-text"> 参考资料</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#10-session"><span class="nav-text"> 1.0 Session</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#20-token"><span class="nav-text"> 2.0 Token</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#jwt%E9%80%80%E5%87%BA%E7%99%BB%E5%BD%95"><span class="nav-text"> JWT退出登录</span></a></li></ol></li></ol></div>
141+
<div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-1"><a class="nav-link" href="#10-session"><span class="nav-text"> 1.0 Session</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#20-token"><span class="nav-text"> 2.0 Token</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#jwt%E9%80%80%E5%87%BA%E7%99%BB%E5%BD%95"><span class="nav-text"> JWT退出登录</span></a></li></ol></li></ol></div>
142142
</div>
143143
<!--/noindex-->
144144

@@ -231,7 +231,7 @@ <h1 class="post-title" itemprop="name headline">
231231
<i class="far fa-calendar-check"></i>
232232
</span>
233233
<span class="post-meta-item-text">更新于</span>
234-
<time title="修改时间:2024-12-29 11:19:27" itemprop="dateModified" datetime="2024-12-29T11:19:27+08:00">2024-12-29</time>
234+
<time title="修改时间:2024-12-29 14:53:27" itemprop="dateModified" datetime="2024-12-29T14:53:27+08:00">2024-12-29</time>
235235
</span>
236236

237237

@@ -243,11 +243,7 @@ <h1 class="post-title" itemprop="name headline">
243243

244244

245245

246-
<div class="post-body" itemprop="articleBody"><h1 id="参考资料"><a class="markdownIt-Anchor" href="#参考资料"></a> 参考资料</h1>
247-
<ol>
248-
<li><a target="_blank" rel="noopener" href="https://www.itbaima.cn/document/wci9lb9tgea866jt?segment=1#doc1-%E8%B5%B0%E8%BF%9BSpringBoot%E5%89%8D%E5%90%8E%E7%AB%AF%E5%88%86%E7%A6%BB">柏码知识库</a></li>
249-
</ol>
250-
<h1 id="10-session"><a class="markdownIt-Anchor" href="#10-session"></a> 1.0 Session</h1>
246+
<div class="post-body" itemprop="articleBody"><h1 id="10-session"><a class="markdownIt-Anchor" href="#10-session"></a> 1.0 Session</h1>
251247
<p>有状态:用户请求接口 -&gt; <strong>从Session中读取用户信息</strong> -&gt; 根据当前的用户来处理业务 -&gt; 返回</p>
252248
<p>缺点:<strong>不支持分布式</strong></p>
253249
<h1 id="20-token"><a class="markdownIt-Anchor" href="#20-token"></a> 2.0 Token</h1>
@@ -269,6 +265,7 @@ <h2 id="jwt退出登录"><a class="markdownIt-Anchor" href="#jwt退出登录"></
269265
<p>采用黑名单方案。一台服务器存储JWT黑名单,共享给所有微服务。</p>
270266
<figure class="highlight java"><table><tr><td class="code"><pre><span class="line">JWT.create()</span><br><span class="line"> <span class="comment">// 额外添加一个UUID用于记录黑名单,将其作为JWT的ID属性jti</span></span><br><span class="line"> .withJWTId(UUID.randomUUID().toString())</span><br></pre></td></tr></table></figure>
271267
<figure class="highlight java"><table><tr><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">JwtUtils</span> &#123; </span><br><span class="line"> </span><br><span class="line"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> HashSet&lt;String&gt; blackList = <span class="keyword">new</span> <span class="title class_">HashSet</span>&lt;&gt;();</span><br><span class="line"> <span class="comment">// 加入黑名单方法</span></span><br><span class="line"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="type">boolean</span> <span class="title function_">invalidate</span><span class="params">(String token)</span>&#123;</span><br><span class="line"> <span class="type">Algorithm</span> <span class="variable">algorithm</span> <span class="operator">=</span> Algorithm.HMAC256(key);</span><br><span class="line"> <span class="type">JWTVerifier</span> <span class="variable">jwtVerifier</span> <span class="operator">=</span> JWT.require(algorithm).build();</span><br><span class="line"> <span class="keyword">try</span> &#123;</span><br><span class="line"> <span class="type">DecodedJWT</span> <span class="variable">verify</span> <span class="operator">=</span> jwtVerifier.verify(token);</span><br><span class="line"> Map&lt;String, Claim&gt; claims = verify.getClaims();</span><br><span class="line"> <span class="comment">//取出UUID丢进黑名单中</span></span><br><span class="line"> <span class="keyword">return</span> blackList.add(verify.getId());</span><br><span class="line"> &#125; <span class="keyword">catch</span> (JWTVerificationException e) &#123;</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line"> &#125;</span><br><span class="line"> &#125;</span><br><span class="line"></span><br><span class="line"> <span class="keyword">public</span> <span class="keyword">static</span> UserDetails <span class="title function_">resolveJwt</span><span class="params">(String token)</span>&#123;</span><br><span class="line"> <span class="type">Algorithm</span> <span class="variable">algorithm</span> <span class="operator">=</span> Algorithm.HMAC256(key);</span><br><span class="line"> <span class="type">JWTVerifier</span> <span class="variable">jwtVerifier</span> <span class="operator">=</span> JWT.require(algorithm).build();</span><br><span class="line"> <span class="keyword">try</span> &#123;</span><br><span class="line"> <span class="type">DecodedJWT</span> <span class="variable">verify</span> <span class="operator">=</span> jwtVerifier.verify(token);</span><br><span class="line"> <span class="comment">// 判断是否存在于黑名单中,如果存在,则返回null表示失效</span></span><br><span class="line"> <span class="keyword">if</span>(blackList.contains(verify.getId()))</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">null</span>;</span><br><span class="line"> Map&lt;String, Claim&gt; claims = verify.getClaims();</span><br><span class="line"> <span class="keyword">if</span>(<span class="keyword">new</span> <span class="title class_">Date</span>().after(claims.get(<span class="string">&quot;exp&quot;</span>).asDate()))</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">null</span>;</span><br><span class="line"> <span class="keyword">return</span> User</span><br><span class="line"> .withUsername(claims.get(<span class="string">&quot;name&quot;</span>).asString())</span><br><span class="line"> .password(<span class="string">&quot;&quot;</span>)</span><br><span class="line"> .authorities(claims.get(<span class="string">&quot;authorities&quot;</span>).asArray(String.class))</span><br><span class="line"> .build();</span><br><span class="line"> &#125; <span class="keyword">catch</span> (JWTVerificationException e) &#123;</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">null</span>;</span><br><span class="line"> &#125;</span><br><span class="line"> &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure>
268+
272269
</div>
273270

274271

0 commit comments

Comments
 (0)