-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
174 lines (159 loc) · 18.3 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
<!DOCTYPE html><html lang="en" data-theme="light"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><title>YiAiluo‘s BLOG - 爱自己是终身浪漫的开始</title><meta name="author" content="易霭珞"><meta name="copyright" content="易霭珞"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta property="og:type" content="website">
<meta property="og:title" content="YiAiluo‘s BLOG">
<meta property="og:url" content="https://yiailuo.github.io/index.html">
<meta property="og:site_name" content="YiAiluo‘s BLOG">
<meta property="og:locale" content="en_US">
<meta property="og:image" content="https://yiailuo.github.io/img/icon.png">
<meta property="article:author" content="易霭珞">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://yiailuo.github.io/img/icon.png"><link rel="shortcut icon" href="/img/favicon.png"><link rel="canonical" href="https://yiailuo.github.io/"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//busuanzi.ibruce.info"/><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.min.css" media="print" onload="this.media='all'"><script>const GLOBAL_CONFIG = {
root: '/',
algolia: undefined,
localSearch: undefined,
translate: undefined,
noticeOutdate: undefined,
highlight: {"plugin":"highlighjs","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":false},
copy: {
success: 'Copy successfully',
error: 'Copy error',
noSupport: 'The browser does not support'
},
relativeDate: {
homepage: false,
post: false
},
runtime: '',
date_suffix: {
just: 'Just',
min: 'minutes ago',
hour: 'hours ago',
day: 'days ago',
month: 'months ago'
},
copyright: undefined,
lightbox: 'fancybox',
Snackbar: undefined,
source: {
justifiedGallery: {
js: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.js',
css: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.css'
}
},
isPhotoFigcaption: false,
islazyload: false,
isAnchor: false,
percent: {
toc: true,
rightside: false,
}
}</script><script id="config-diff">var GLOBAL_CONFIG_SITE = {
title: 'YiAiluo‘s BLOG',
isPost: false,
isHome: true,
isHighlightShrink: false,
isToc: false,
postUpdate: '2023-08-04 11:38:09'
}</script><noscript><style type="text/css">
#nav {
opacity: 1
}
.justified-gallery img {
opacity: 1
}
#recent-posts time,
#post-meta time {
display: inline !important
}
</style></noscript><script>(win=>{
win.saveToLocal = {
set: function setWithExpiry(key, value, ttl) {
if (ttl === 0) return
const now = new Date()
const expiryDay = ttl * 86400000
const item = {
value: value,
expiry: now.getTime() + expiryDay,
}
localStorage.setItem(key, JSON.stringify(item))
},
get: function getWithExpiry(key) {
const itemStr = localStorage.getItem(key)
if (!itemStr) {
return undefined
}
const item = JSON.parse(itemStr)
const now = new Date()
if (now.getTime() > item.expiry) {
localStorage.removeItem(key)
return undefined
}
return item.value
}
}
win.getScript = url => new Promise((resolve, reject) => {
const script = document.createElement('script')
script.src = url
script.async = true
script.onerror = reject
script.onload = script.onreadystatechange = function() {
const loadState = this.readyState
if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
script.onload = script.onreadystatechange = null
resolve()
}
document.head.appendChild(script)
})
win.activateDarkMode = function () {
document.documentElement.setAttribute('data-theme', 'dark')
if (document.querySelector('meta[name="theme-color"]') !== null) {
document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
}
}
win.activateLightMode = function () {
document.documentElement.setAttribute('data-theme', 'light')
if (document.querySelector('meta[name="theme-color"]') !== null) {
document.querySelector('meta[name="theme-color"]').setAttribute('content', '#ffffff')
}
}
const t = saveToLocal.get('theme')
if (t === 'dark') activateDarkMode()
else if (t === 'light') activateLightMode()
const asideStatus = saveToLocal.get('aside-status')
if (asideStatus !== undefined) {
if (asideStatus === 'hide') {
document.documentElement.classList.add('hide-aside')
} else {
document.documentElement.classList.remove('hide-aside')
}
}
const detectApple = () => {
if(/iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)){
document.documentElement.classList.add('apple')
}
}
detectApple()
})(window)</script><meta name="generator" content="Hexo 6.3.0"><link rel="alternate" href="/atom.xml" title="YiAiluo‘s BLOG" type="application/atom+xml">
</head><body><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="avatar-img is-center"><img src="/img/icon.png" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="sidebar-site-data site-data is-center"><a href="/archives/"><div class="headline">Articles</div><div class="length-num">3</div></a><a href="/tags/"><div class="headline">Tags</div><div class="length-num">0</div></a><a href="/categories/"><div class="headline">Categories</div><div class="length-num">0</div></a></div><hr/></div></div><div class="page" id="body-wrap"><header class="full_page" id="page-header"><nav id="nav"><span id="blog_name"><a id="site-name" href="/">YiAiluo‘s BLOG</a></span><div id="menus"><div id="toggle-menu"><a class="site-page"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="site-info"><h1 id="site-title">YiAiluo‘s BLOG</h1><div id="site_social_icons"><a class="social-icon" href="https://github.com/yiailuo" target="_blank" title="Github"><i class="fab fa-github"></i></a><a class="social-icon" href="mailto:[email protected]" target="_blank" title="Email"><i class="fas fa-envelope"></i></a></div></div><div id="scroll-down"><i class="fas fa-angle-down scroll-down-effects"></i></div></header><main class="layout" id="content-inner"><div class="recent-posts" id="recent-posts"><div class="recent-post-item"><div class="post_cover left"><a href="/Docker%E6%A0%B8%E5%BF%83%E6%8A%80%E6%9C%AF/" title="Docker核心技术-易霭珞"><img class="post_bg" src="https://pic3.zhimg.com/80/v2-27e8f29e6eb257f6f65df007c6966f12_720w.webp" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Docker核心技术-易霭珞"></a></div><div class="recent-post-info"><a class="article-title" href="/Docker%E6%A0%B8%E5%BF%83%E6%8A%80%E6%9C%AF/" title="Docker核心技术-易霭珞">Docker核心技术-易霭珞</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">Created</span><time datetime="2022-11-30T13:27:50.490Z" title="Created 2022-11-30 21:27:50">2022-11-30</time></span></div><div class="content">Docker核心技术初识Docker
基于Linux内核的Cgoup,NameSpace,以及Union FS等技术,对进程进行封装隔离,属于操作系统层面的虚拟技术,由于隔离的进程独立于宿主和其他的隔离的进程,因此也被称为容器。
Docker在容器的基础上,进行了进一步的封装,从文件系统,网络互联网到进程隔离等等,极大的简化了容器的创建和维护,使得Docker技术比虚拟机技术更为简便、快捷。
为什么要用Docker?它有哪些特性和优势? 它能更高效的利用系统资源、更快速的启动时间、一致的运行环境、更轻松的迁移、更轻松的维护和扩展
特性:安全性、隔离性、便携性、可配额
Docker与虚拟机的区别
参考链接:Docker与虚拟机的区别 - 简书 (jianshu.com)
容器操作 启动:
docker run
-it 交互
-d 后台运行
-p 端口映射
-v 磁盘挂载
启动已终止的容器:docker start
停止容器:docker stop
查看容器进程:docker ps
查看容器细节 ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/SpringSecurity%E5%AD%A6%E4%B9%A02-%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8E%A7%E5%88%B6%E5%99%A8Handler/" title="SpringSecurity-自定义控制器Handler"><img class="post_bg" src="https://pic2.zhimg.com/v2-3a1fb23e19b2448033a9b7333941f465_r.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="SpringSecurity-自定义控制器Handler"></a></div><div class="recent-post-info"><a class="article-title" href="/SpringSecurity%E5%AD%A6%E4%B9%A02-%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8E%A7%E5%88%B6%E5%99%A8Handler/" title="SpringSecurity-自定义控制器Handler">SpringSecurity-自定义控制器Handler</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">Created</span><time datetime="2022-09-30T04:33:52.928Z" title="Created 2022-09-30 12:33:52">2022-09-30</time></span></div><div class="content">续接第一篇文章的入门demoSpringSecurity学习1-入门详解
为什么要自定义控制器Handler?在上一篇的demo中,我们在登录成功后,跳转页面用到了successForwardUrl() ,表示成功后转发请求到地址。内部是通过 successHandler() 方法进行控制成功后交给哪个类进行处理
源码分析可以看到sucessForwardUrl将forwordUrl 转发给ForwardAuthenticationSuccessHandler类进行处理而ForwardAuthenticationSuccessHandler类的内部是简单的请求转发当我们需要请求跳转到站外的地址或者在前后端分离的项目中登录请求跳转时,使用successForwardUrl()是不行的,这就需要我们去自定义控制器
自定义类自定义登录成功处理器,重写AuthenticationSuccessHandler接口中的方法
12345678910111213141516171819202122232425262728293031package com.example.demo.handler;im ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/hello-world/" title="SpringSecurity入门详解-易霭珞"><img class="post_bg" src="https://pic3.zhimg.com/80/v2-27e8f29e6eb257f6f65df007c6966f12_720w.webp" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="SpringSecurity入门详解-易霭珞"></a></div><div class="recent-post-info"><a class="article-title" href="/hello-world/" title="SpringSecurity入门详解-易霭珞">SpringSecurity入门详解-易霭珞</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">Created</span><time datetime="2022-09-29T11:42:32.847Z" title="Created 2022-09-29 19:42:32">2022-09-29</time></span></div><div class="content">1.安全框架概述什么是安全框架?解决系统安全问题的框架,如果没有安全框架,我们需要手动处理每个资源的访问控制,非常麻烦。使用安全框架,我们可以通过配置的方式实现对资源的访问控制
2.SpringSecurity:Spring家族的一员,是一个能够基于Spring的企业应用系统提供声明式的安全访问控制解决方案、高度自定义的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IOC(控制反转Inversion of Control ),DI(Dependency Injecion 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明示的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。它的核心功能是“认证”和“授权”。
2.入门demo1.导入依赖
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051<?xml version="1.0" encoding=" ...</div></div></div><nav id="pagination"><div class="pagination"><span class="page-number current">1</span></div></nav></div><div class="aside-content" id="aside-content"><div class="card-widget card-info"><div class="is-center"><div class="avatar-img"><img src="/img/icon.png" onerror="this.onerror=null;this.src='/img/friend_404.gif'" alt="avatar"/></div><div class="author-info__name">易霭珞</div><div class="author-info__description"></div></div><div class="card-info-data site-data is-center"><a href="/archives/"><div class="headline">Articles</div><div class="length-num">3</div></a><a href="/tags/"><div class="headline">Tags</div><div class="length-num">0</div></a><a href="/categories/"><div class="headline">Categories</div><div class="length-num">0</div></a></div><a id="card-info-btn" target="_blank" rel="noopener" href="https://github.com/xxxxxx"><i class="fab fa-github"></i><span>Follow Me</span></a><div class="card-info-social-icons is-center"><a class="social-icon" href="https://github.com/yiailuo" target="_blank" title="Github"><i class="fab fa-github"></i></a><a class="social-icon" href="mailto:[email protected]" target="_blank" title="Email"><i class="fas fa-envelope"></i></a></div></div><div class="card-widget card-announcement"><div class="item-headline"><i class="fas fa-bullhorn fa-shake"></i><span>Announcement</span></div><div class="announcement_content">This is my Blog</div></div><div class="sticky_layout"><div class="card-widget card-recent-post"><div class="item-headline"><i class="fas fa-history"></i><span>Recent Post</span></div><div class="aside-list"><div class="aside-list-item"><a class="thumbnail" href="/Docker%E6%A0%B8%E5%BF%83%E6%8A%80%E6%9C%AF/" title="Docker核心技术-易霭珞"><img src="https://pic3.zhimg.com/80/v2-27e8f29e6eb257f6f65df007c6966f12_720w.webp" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Docker核心技术-易霭珞"/></a><div class="content"><a class="title" href="/Docker%E6%A0%B8%E5%BF%83%E6%8A%80%E6%9C%AF/" title="Docker核心技术-易霭珞">Docker核心技术-易霭珞</a><time datetime="2022-11-30T13:27:50.490Z" title="Created 2022-11-30 21:27:50">2022-11-30</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/SpringSecurity%E5%AD%A6%E4%B9%A02-%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8E%A7%E5%88%B6%E5%99%A8Handler/" title="SpringSecurity-自定义控制器Handler"><img src="https://pic2.zhimg.com/v2-3a1fb23e19b2448033a9b7333941f465_r.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="SpringSecurity-自定义控制器Handler"/></a><div class="content"><a class="title" href="/SpringSecurity%E5%AD%A6%E4%B9%A02-%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8E%A7%E5%88%B6%E5%99%A8Handler/" title="SpringSecurity-自定义控制器Handler">SpringSecurity-自定义控制器Handler</a><time datetime="2022-09-30T04:33:52.928Z" title="Created 2022-09-30 12:33:52">2022-09-30</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/hello-world/" title="SpringSecurity入门详解-易霭珞"><img src="https://pic3.zhimg.com/80/v2-27e8f29e6eb257f6f65df007c6966f12_720w.webp" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="SpringSecurity入门详解-易霭珞"/></a><div class="content"><a class="title" href="/hello-world/" title="SpringSecurity入门详解-易霭珞">SpringSecurity入门详解-易霭珞</a><time datetime="2022-09-29T11:42:32.847Z" title="Created 2022-09-29 19:42:32">2022-09-29</time></div></div></div></div><div class="card-widget card-archives"><div class="item-headline"><i class="fas fa-archive"></i><span>Archives</span></div><ul class="card-archive-list"><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2022/11/"><span class="card-archive-list-date">November 2022</span><span class="card-archive-list-count">1</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2022/09/"><span class="card-archive-list-date">September 2022</span><span class="card-archive-list-count">2</span></a></li></ul></div><div class="card-widget card-webinfo"><div class="item-headline"><i class="fas fa-chart-line"></i><span>Info</span></div><div class="webinfo"><div class="webinfo-item"><div class="item-name">Article :</div><div class="item-count">3</div></div><div class="webinfo-item"><div class="item-name">UV :</div><div class="item-count" id="busuanzi_value_site_uv"><i class="fa-solid fa-spinner fa-spin"></i></div></div><div class="webinfo-item"><div class="item-name">PV :</div><div class="item-count" id="busuanzi_value_site_pv"><i class="fa-solid fa-spinner fa-spin"></i></div></div><div class="webinfo-item"><div class="item-name">Last Push :</div><div class="item-count" id="last-push-date" data-lastPushDate="2023-08-04T03:38:09.620Z"><i class="fa-solid fa-spinner fa-spin"></i></div></div></div></div></div></div></main><footer id="footer"><div id="footer-wrap"><div class="copyright">©2020 - 2023 By 易霭珞</div><div class="framework-info"><span>Framework </span><a target="_blank" rel="noopener" href="https://hexo.io">Hexo</a><span class="footer-separator">|</span><span>Theme </span><a target="_blank" rel="noopener" href="https://github.com/jerryc127/hexo-theme-butterfly">Butterfly</a></div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="darkmode" type="button" title="Switch Between Light And Dark Mode"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="Toggle between single-column and double-column"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside_config" type="button" title="Setting"><i class="fas fa-cog fa-spin"></i></button><button id="go-up" type="button" title="Back To Top"><span class="scroll-percent"></span><i class="fas fa-arrow-up"></i></button></div></div><div><script src="/js/utils.js"></script><script src="/js/main.js"></script><script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.umd.min.js"></script><div class="js-pjax"></div><script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script></div></body></html>