日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

SpringBoot如何實(shí)現(xiàn)同域SSO(單點(diǎn)登錄)

瀏覽:177日期:2023-03-11 11:46:54
目錄如何實(shí)現(xiàn)同域SSO?代碼實(shí)現(xiàn)依賴配置控制器攔截器實(shí)現(xiàn)界面

單點(diǎn)登錄,其實(shí)看起來不是很復(fù)雜,只是細(xì)節(jié)上的處理,單點(diǎn)區(qū)分有三種

同域SSO 同父域SSO 跨域的SSO 如何實(shí)現(xiàn)同域SSO?

個(gè)人理解:當(dāng)用戶登錄訪問demo1.lzmvlog.top時(shí),同時(shí)具有訪問demo2.lzmvlog.top的能力,即認(rèn)證完成一次,可以訪問所有系統(tǒng)。

實(shí)現(xiàn)方式:可以采用Cookie實(shí)現(xiàn),即用戶在訪問一個(gè)系統(tǒng)時(shí),攜帶認(rèn)證頒發(fā)的信息,系統(tǒng)響應(yīng)是否具有訪問資格,否則跳轉(zhuǎn)認(rèn)證,也可以采用Session,即Session共享,校驗(yàn)訪問用戶是否具有有效的信息,提供訪問資格

代碼實(shí)現(xiàn)依賴

<!--spring-data-jpa--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId></dependency><!-- mysql --><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId></dependency>配置

server: port: 8090spring: application: name: authority datasource: url: jdbc:mysql://127.0.0.1:3306/SSO?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2B8 username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver

當(dāng)用戶訪問除登錄界面時(shí),都需要提前認(rèn)證,認(rèn)證完成之后需要跳轉(zhuǎn)到之前訪問的路徑上,并提供訪問別的系統(tǒng)的權(quán)限。

實(shí)現(xiàn)邏輯,當(dāng)用戶訪問任何路徑時(shí),都需要通過攔截器的校驗(yàn),確認(rèn)擁有訪問的權(quán)限,才能放行通過,不具有訪問權(quán)限的,重定向到 登錄界面,并保存原有訪問的頁面路徑,驗(yàn)證成功的時(shí)候跳轉(zhuǎn)到原有頁面

控制器

@Controllerpublic class IndexController { @Autowired UserRepository userRepository; /** * 將要跳轉(zhuǎn)的路徑 */ public String url; /** * 登錄界面 * * @return */ @GetMapping('/index') public String index() {return 'index'; } /** * 登錄界面 * * @return */ @GetMapping('/') public String index1() {return 'index'; } /** * 登錄請(qǐng)求接口 * * @param username 賬號(hào) * @param password 密碼 * @param response * @return */ @PostMapping('login') public String login(String username, String password, HttpServletResponse response) {// 用戶登錄boolean exists = userRepository.exists(Example.of(new User().setUsername(username).setPassword(password)));if (exists) { Cookie cookie = new Cookie('username', username); response.addCookie(cookie); // 如果正常訪問即跳轉(zhuǎn)到正常頁面 if (StringUtils.isEmpty(url)) {return 'demo1'; } // 如果之前存在訪問的頁面,認(rèn)證完成即跳轉(zhuǎn)會(huì)原有的頁面 return url;}return 'index'; } /** * 跳轉(zhuǎn)到 demo2 * * @return */ @GetMapping('demo2') public String demo2() {return 'demo2'; } /** * 跳轉(zhuǎn)到 demo1 * * @return */ @GetMappi=ng('demo1') public String demo1() {return 'demo1'; }}攔截器實(shí)現(xiàn)

@Componentpublic class CookieHandlerInterceptor implements HandlerInterceptor { @Autowired UserRepository userRepository; @Autowired IndexController indexController; /** * 執(zhí)行方法之前 * * @param request * @param response * @param handler * @return * @throws Exception */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 獲取當(dāng)前請(qǐng)求得路徑 如果不是正常得登錄界面請(qǐng)求 登錄成功之后需要跳轉(zhuǎn)到原來請(qǐng)求得界面上String servletPath = request.getServletPath();// 對(duì)不需要攔截得路徑進(jìn)行放行if ('/index'.equals(servletPath) || '/'.equals(servletPath) || '/login'.equals(servletPath)) { return true;}if (!'/index'.equals(servletPath) || !'/'.equals(servletPath)) { indexController.url = servletPath;}Cookie[] cookies = request.getCookies();boolean exists = false;if (cookies != null) { for (Cookie cookie : cookies) {String value = cookie.getValue();if (!StringUtils.isEmpty(value)) { exists = userRepository.exists(Example.of(new User() .setUsername(value)));} }}if (exists) { return true;} else { response.sendRedirect('/index');}return false; }}

在SpringBoot2.x之后不能生效,需要將攔截器添加到攔截器鏈路中,即:

@Configurationpublic class WebMvcConfig extends WebMvcConfigurationSupport { /** * Session 攔截處理器 */ @Autowired private CookieHandlerInterceptor cookieHandlerInterceptor; /** * 添加攔截器 * * @param registry */ @Override protected void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(this.cookieHandlerInterceptor).addPathPatterns('/**');super.addInterceptors(registry); }}

其實(shí)攔截器還有第二種實(shí)現(xiàn)方式,即通過Filter接口實(shí)現(xiàn)

@Componentpublic class CookieFilter extends OncePerRequestFilter { @Autowired UserRepository userRepository; @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {// 獲取當(dāng)前請(qǐng)求得路徑 如果不是正常得登錄界面請(qǐng)求 登錄成功之后需要跳轉(zhuǎn)到原來請(qǐng)求得界面上String servletPath = request.getServletPath();IndexController indexController = new IndexController();// 對(duì)不需要攔截得路徑進(jìn)行放行if ('/index'.equals(servletPath) || '/'.equals(servletPath) || '/login'.equals(servletPath)) { filterChain.doFilter(request, response);}if (!'/index'.equals(servletPath) || !'/'.equals(servletPath)) { indexController.url = servletPath;}Cookie[] cookies = request.getCookies();boolean exists = false;if (cookies != null) { for (Cookie cookie : cookies) {String value = cookie.getValue();if (!StringUtils.isEmpty(value)) { exists = userRepository.exists(Example.of(new User() .setUsername(value)));} }}if (exists) { filterChain.doFilter(request, response);} else { response.sendRedirect('/');} }}

其實(shí)也可以采用Session的方式實(shí)現(xiàn),采用共享Session的方式,我這里只是簡單的實(shí)現(xiàn)一下,其實(shí)在認(rèn)證時(shí)可以結(jié)合SpringSecurity或者Shiro安全框架去整合JWT以保證信息的安全

界面

index.html

<!DOCTYPE html><html><head> <meta charset='UTF-8'> <title>登錄</title></head><body><div align='center'> <h1>請(qǐng)登錄</h1> <form action='/login' method='post'><span>賬號(hào):</span><input name='username' type='text' value='zhang'><br><span>密碼:</span><input name='password' type='password' value='123456'><br><button type='submit' style='margin: 10px 0'>登錄</button> </form></div></body></html>

demo1.html和demo2.html只需要坐一下簡單的區(qū)分,知道是哪個(gè)頁面就行了

同域SSO其實(shí)不是很復(fù)雜,只是了解一下整個(gè)訪問的過程,和需要做的一些限制即可,后續(xù)看看做后面兩種的實(shí)現(xiàn)

即同父域SSO和跨域SSO

以上就是SpringBoot如何實(shí)現(xiàn)同域SSO(單點(diǎn)登錄)的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot 實(shí)現(xiàn)同域SSO的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲欧美日韩在线观看a三区| 日韩av二区在线播放| 国产精品videossex久久发布| 日本在线视频一区二区| 综合一区在线| 欧美一区激情| 69精品国产久热在线观看| 日韩视频1区| 日本少妇精品亚洲第一区| 日韩av电影一区| 国产日韩一区二区三区在线 | 国产中文字幕一区二区三区| 国产精区一区二区| 欧美激情五月| 久久久久久自在自线| 日韩一区三区| 亚洲国产不卡| 蜜臀久久99精品久久久久宅男| 老司机精品久久| 亚洲精品进入| 久久av国产紧身裤| 国产99在线| 亚洲大全视频| 免费成人在线影院| 日韩精品三区四区| 国产精品高清一区二区| 欧美激情网址| 午夜影院一区| 日韩午夜一区| 亚洲精品国产精品粉嫩| 日本久久一区| 精品国产不卡一区二区| 在线一区av| 夜夜精品视频| 欧美啪啪一区| 日韩国产一区二区三区| 伊人久久亚洲影院| 婷婷综合成人| 免费在线成人| 亚洲福利久久| 日本aⅴ亚洲精品中文乱码| 国产毛片久久久| 黑人精品一区| 蜜桃av一区二区三区电影| 奇米色欧美一区二区三区| 精品国产一区二| 女同性一区二区三区人了人一 | 亚洲乱码视频| 久久免费福利| 欧美日韩激情| 日韩国产一区二| 国产传媒在线观看| 亚洲女同中文字幕| 国产亚洲精品美女久久| 国产一区二区三区四区五区传媒| 欧美在线观看视频一区| 人人精品久久| 91精品国产调教在线观看| 丝袜诱惑制服诱惑色一区在线观看| 91午夜精品| 99久久久久国产精品| 日韩中文字幕| 色综合www| 国产欧美一级| 午夜久久久久| 久久三级毛片| 老司机久久99久久精品播放免费| 精品免费视频| 蜜臀久久久99精品久久久久久| 国产精品亚洲欧美| 日韩午夜av在线| 成人在线黄色| 日韩三级一区| 亚洲一级特黄| 久久亚洲精精品中文字幕| 亚洲免费激情| 国产美女高潮在线观看| 日韩动漫一区| 欧美午夜不卡| 成人国产精品一区二区免费麻豆| 麻豆精品91| 精品亚洲美女网站| 欧美激情aⅴ一区二区三区 | 色乱码一区二区三区网站| 免费在线成人网| 久久久男人天堂| 欧美日韩亚洲一区| 影院欧美亚洲| 国产精品久久久久久久免费观看| 亚洲精品乱码| 久久亚洲国产| 国产在视频一区二区三区吞精| 首页亚洲欧美制服丝腿| se01亚洲视频 | 欧美日韩国产一区精品一区| 久久激情综合网| 人人精品人人爱| 99视频精品全国免费| 你懂的国产精品永久在线| 亚洲精品韩国| 丝袜美腿高跟呻吟高潮一区| 欧美日韩一区二区三区视频播放| 精品久久中文| 国产精品v一区二区三区| 日本不卡一区二区| 首页亚洲欧美制服丝腿| 91精品啪在线观看国产18| 久久免费精品| 国产精品s色| 日韩动漫一区| 日韩av字幕| 日日夜夜免费精品| 四虎精品一区二区免费| 亚洲影视一区二区三区| 免费日韩av| 9久re热视频在线精品| 欧美成人基地 | 国产999精品在线观看| 国产精品久久久久久妇女 | 精品国产aⅴ| 国产免费播放一区二区| 五月激激激综合网色播| 先锋影音久久久| 亚洲作爱视频| 性欧美69xoxoxoxo| 亚洲国产一区二区在线观看| 欧美日韩中文一区二区| 久久久人人人| 久久视频国产| 激情六月综合| 伊人精品视频| 日韩精品一级中文字幕精品视频免费观看 | 国产成人精品免费视| 美女av一区| 麻豆成人综合网| 国产一区二区三区四区二区| 国产一区二区三区亚洲| www.九色在线| 精品捆绑调教一区二区三区| 欧美中文字幕一区二区| 黄色亚洲免费| 国产一区二区高清| 蜜桃免费网站一区二区三区 | 99亚洲精品| 亚洲一区av| 日韩高清不卡在线| 国产精品亚洲欧美日韩一区在线 | 欧美日一区二区三区在线观看国产免 | 国产一区欧美| 影院欧美亚洲| 日韩一区二区三区高清在线观看| 日韩精品欧美大片| 欧美激情视频一区二区三区免费| 国产精品tv| 亚洲国产成人二区| 在线日韩一区| 亚洲精选91| 国产精品a级| 天堂中文在线播放| 99久久精品网站| 亚洲欧洲另类| 日韩1区2区3区| 精品三级av在线导航| 欧美日韩尤物久久| 久久高清免费观看| 国产亚洲电影| 国产精品成人a在线观看| 久久久天天操| 亚洲狼人精品一区二区三区| 国产精品流白浆在线观看| 黄色aa久久| 视频一区视频二区中文| 国产精品亚洲二区| 免费高潮视频95在线观看网站| av一区在线| 日韩在线卡一卡二| 鲁大师精品99久久久| 久久亚洲精品中文字幕蜜潮电影| 美女国产精品| 久久av影视| 91久久久精品国产| 国产无遮挡裸体免费久久| 成人久久一区| 日韩二区三区四区| 国产麻豆久久| 日韩激情中文字幕| 国产成人免费| 国产亚洲一级| 国产精品4hu.www| 高清av一区| 1000部精品久久久久久久久| 亚洲精品在线二区| 中文字幕在线高清| 午夜精品婷婷| 开心激情综合| 免费视频国产一区| 日本免费在线视频不卡一不卡二| 久久亚洲电影| 国产一二在线播放| 日韩中文字幕av电影|