免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

Vue+Jwt+SpringBoot+Ldap完成登錄認(rèn)證的示例代碼-創(chuàng)新互聯(lián)

本人野生程序員一名,了解了一些微服務(wù)架構(gòu)、前后端分離、SPA的知識(shí)后就想試試做點(diǎn)什么東西。之前一直做后端,前端只是有基礎(chǔ)知識(shí)。之前學(xué)習(xí)過angularjs,但當(dāng)時(shí)就是一臉懵逼(完全看不懂是啥)就放棄了。最近又學(xué)了Vue,這次感覺總算明白了一些,但其中也跳過很多坑(應(yīng)該還會(huì)更多),在這里寫下來記錄一下吧。

創(chuàng)新互聯(lián)公司是一家以成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、品牌設(shè)計(jì)、軟件運(yùn)維、營(yíng)銷推廣、小程序App開發(fā)等移動(dòng)開發(fā)為一體互聯(lián)網(wǎng)公司。已累計(jì)為小攪拌車等眾行業(yè)中小客戶提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開發(fā)服務(wù)。

說回主題,之前傳統(tǒng)登錄認(rèn)證的方法基本是由服務(wù)器端提供一個(gè)登錄頁面,頁面中的一個(gè)form輸入username和password后POST給服務(wù)器,服務(wù)器將這些信息與DB或Ldap中的用戶信息對(duì)比,成功則將這個(gè)用戶信息記錄到session中。

這里我就跳了第一個(gè)大坑。傳統(tǒng)方式前后端不分離,后端負(fù)責(zé)頁面渲染,但是在前后分離的情況下,后端只負(fù)責(zé)通過暴露的RestApi提供數(shù)據(jù),而頁面的渲染、路由都由前端完成。因?yàn)閞est是無狀態(tài)的,因此也就不會(huì)有session記錄到服務(wù)器端。

之前一直使用SpringSecurity+Cas+Ldap來做SSO,但是使用Vue做前端后我怎都想不出用之前的方法做SSO(這個(gè)坑真的爬了好久才爬出來)。后來終于想明白了上面說的session的問題(我是這么認(rèn)為的也可能不對(duì),CAS也有RestApi,但是按官網(wǎng)配置沒成功,放棄了)。

第一個(gè)問題,該如何解決SSO的問題呢,要說到JWT。JWT是個(gè)規(guī)范,各種語言有各種語言的實(shí)現(xiàn),可以去官網(wǎng)查到。我淺薄的理解是有一個(gè)認(rèn)證服務(wù)(你自己寫的,Db、Ldap什么都可以)這個(gè)認(rèn)證服務(wù)會(huì)通過用戶的提交信息判斷認(rèn)證是否成功,如果成功則查詢出一些用戶的信息(用戶名、角色什么的),然后JWT把這些信息加密成為一個(gè)token,返回給客戶端瀏覽器,瀏覽器把這些信息存儲(chǔ)在localstorage中,以后每次訪問資源都會(huì)在header中攜帶這個(gè)信息,服務(wù)器收到請(qǐng)求后使用和加密時(shí)相同的key解密密文,如果解密成功則視為用戶已經(jīng)認(rèn)證過(當(dāng)然你可以在加密時(shí)添加以一個(gè)過期時(shí)間)也就完成了SSO。使用解密出的角色信息你就可以判斷這個(gè)用戶是否有權(quán)限執(zhí)行一些業(yè)務(wù)。這樣做完后感覺好像SpringSecurity、Cas在SPA應(yīng)用中的SSO似乎沒什么作用了,目前我是這么認(rèn)為的(當(dāng)然可能不對(duì))

第一個(gè)問題差不多解決了,來說第二個(gè)問題。之前因?yàn)橛衧ession的存在,在訪問受保護(hù)的資源時(shí)如果服務(wù)器端沒有當(dāng)前用戶的session,則會(huì)強(qiáng)制跳轉(zhuǎn)到登錄頁。那在前后分離的情況下要如何實(shí)現(xiàn)這個(gè)需求。思路是這樣的:利用Vue-Router的全局路由鉤子,在訪問任何頁面時(shí)先判斷l(xiāng)ocalStorage中是否存在JWT加密后的token并且token是否過期,如果存在且沒有過期則正常跳轉(zhuǎn)到請(qǐng)求的頁面,不存在或者過期則跳轉(zhuǎn)到登錄頁重新認(rèn)證。

思路說完了,上代碼

1.首先你需要一個(gè)Ldap,我使用的是AD。這里我建立了一個(gè)叫minibox.com的域,并且添加了一個(gè)Employees的OU,其中有2個(gè)子OU,子OU中創(chuàng)建了2個(gè)用戶。

Vue+Jwt+SpringBoot+Ldap完成登錄認(rèn)證的示例代碼

在Groups中新建一些組,把之前創(chuàng)建的用戶加入到組中,這樣用戶就擁有了角色。

Vue+Jwt+SpringBoot+Ldap完成登錄認(rèn)證的示例代碼

2.搭建SpringBoot環(huán)境

2.1pom文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>minibox</groupId>
 <artifactId>an</artifactId>
 <version>0.0.1-SNAPSHOT</version>
  <!-- Inherit defaults from Spring Boot -->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.1.RELEASE</version>
  </parent>
  <!-- Add typical dependencies for a web application -->
  <dependencies>
    <!-- MVC -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- Spring boot test -->
    <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
    </dependency> 
    <!-- spring-boot-starter-hateoas -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-hateoas</artifactId>
    </dependency>
    <!-- 熱啟動(dòng) -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <optional>true</optional>
    </dependency>
    <!-- JWT -->
    <dependency>
      <groupId>io.jsonwebtoken</groupId>
      <artifactId>jjwt</artifactId>
      <version>0.7.0</version>
    </dependency>
    <!-- Spring Ldap -->
    <dependency>
      <groupId>org.springframework.ldap</groupId>
      <artifactId>spring-ldap-core</artifactId>
      <version>2.3.1.RELEASE</version>
    </dependency>
    <!-- fastjson -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.24</version>
    </dependency>
  </dependencies>
  <!-- Package as an executable jar -->
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
      <!-- Hot swapping -->
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <dependencies>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>springloaded</artifactId>
            <version>1.2.0.RELEASE</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>
</project>

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)頁名稱:Vue+Jwt+SpringBoot+Ldap完成登錄認(rèn)證的示例代碼-創(chuàng)新互聯(lián)
URL分享:http://newbst.com/article44/dggcee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈品牌網(wǎng)站設(shè)計(jì)ChatGPT手機(jī)網(wǎng)站建設(shè)自適應(yīng)網(wǎng)站云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)