使用IDEA一步一步搭建OAuth2認證測試環境2

maven是怎麼來的

看到示例代碼先要編寫配置class,比如資源服務器:

@Configuration
@EnableResourceServer
public class MyResourceServerConfiguration extends ResourceServerConfigurerAdapter {

    @Override
        public void configure(ResourceServerSecurityConfigurer resources) {
            resources.resourceId("goods").stateless(true);
        }

        @Override
        public void configure(HttpSecurity http) throws Exception {
            // @formatter:off
            http
                    // Since we want the protected resources to be accessible in the UI as well we need
                    // session creation to be allowed (it's disabled by default in 2.0.6)
                    .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)
                    .and()
                    .requestMatchers().anyRequest()
                    .and()
                    .anonymous()
                    .and()
                    .authorizeRequests()
                    //配置order訪問控制,必須認證過後纔可以訪問
                    .antMatchers("/orders/**").authenticated();
            // @formatter:on
        }
}

當然認證服務器的配置也要繼承這個所謂的ResourceServerConfigurerAdapter,關於這個Adapter是什麼東東暫且不管,反正要用的,所以先要通過import把它引用進來,引用如下:

import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;

嘗試在現有系統中新建一個HelloWorldResourceServerConfiguration類,在其中引用ResourceServerConfigurerAdapter,這樣才能讓我們的helloworldconfig新建類繼承這個類啊,改寫程序如下:

package com.example.demo;

import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
public class HelloWorldResourceServerConfiguration extends ResourceServerConfigurerAdapter  {
}

然後系統提示沒有security這個命名空間,security這個單詞智能提示爲紅色,說明沒有引用進來,用以前熟悉的語言理解,以上錯誤類似於C#中的缺少dll動態鏈接庫引用,C++的缺少lib引用,JavaScript中某些插件沒有通過npm安裝到本地nodemodules。

看看我們的現有後端程序,再結合網絡教程,發現在目前流行後端技術中,普遍使用SpringBoot搭建後端微服務(哎,想起了10年前還用asp.net編寫後端,編寫webservice那個時代,一去不復返),使用maven這個東西統一管理項目依賴,關於maven基本概念一大推看起來費勁,最後通過實踐總結,就是類似Vue中Package.json的東西。

IDEA中使用maven

查看是否已經安裝了maven

IDEA中使用maven,可以先從官網下載maven然後自己配置,但是我們一般idea都自帶的,不要以爲在cmd中輸入mvn提示沒有該命令就是本機沒有,有可能只是沒有添加環境變量。
查看IDEA是否已經安裝了maven方法:IDEA中點擊file-setting,定位到maven查看配置:

如圖,可以看出已經存在了maven,自己打開maven home directory中標識的文件夾,可以看到maven文件夾的組織結構如下所示:

如果你的cmd中輸入mvn提示沒有該命令,只需要在環境變量中配置該地址中的bin目錄即可,這個目錄下有一個mvn.cmd,目測應該是調用的這個命令,有可能是其他的,反正是哪個在本文中不重要。

當然要是你idea中本來就沒有maven,那就要自己安裝了,下載地址http://maven.apache.org/download.cgi
然後再在IDEA中的setting中配置這個地址,然後要是你需要在命令行中使用它的話,那就在環境變量中配置其中的bin目錄即可。

maven配置

有了maven目錄以後呢,一般我們還需要配置兩個maven項:

  1. 本地倉庫地址;
  2. 鏡像地址。

什麼意思,通俗一點講,就是現在後端技術發展了,各種插件api庫jar包多了,我們在實際項目中可以使用直接利用人家寫好的庫了,所以,我們用maven這個東西可以把需要的庫直接下載下來,放到我們的本機一個文件夾裏面,然後我們用的時候可以從本機引用,這樣不就既可以使用互聯網的豐富資源,又可以享受本機讀取的快速體驗了嗎,兩全其美嘛,說到這,我又忍不住要感謝思科的兩位創始人,爲了寫情書方便而創辦了思科,有了互聯網路由器交換機,這樣才能讓我們這些開發人員減少工作量啊。

比如這裏我把本地倉庫地址設爲E盤一個文件夾(我自己建好的文件夾,專門存放maven下載插件庫),修改maven目錄下的conf文件夾中的settings.xml:

設置完本地倉庫地址後到idea的setting中將對應的倉庫地址也改成那個地址:

然後按照網上的方法修改鏡像地址,也是修改maven目錄下的conf文件夾中的settings.xml :

這樣maven配置部分就完成了。

在pom.xml中設置需要的依賴

現在我們就需要在pom.xml中配置所需要的依賴,其作用對應vue的package.json,pom是英文單詞Project Object Model的縮寫,直譯:項目對象模型,其中存放了maven構建的配置,該文件存在我們剛建立的項目文件夾的根目錄下,上一篇文章新建springboot web項目時默認添加了兩個依賴:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

很顯然,這兩個依賴不包括我們需要的類,要不然上文不會提示錯誤,所以我們現在只要將需要的庫添加進來即可,添加如下三個依賴:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.security.oauth</groupId>
            <artifactId>spring-security-oauth2</artifactId>
            <version>2.3.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

注意,其中第二個org.springframework.security.oauth一定要添加version標籤註明版本號,不然沒用,我自己就在這上面卡很久,一個小坑吧。
添加完成後系統會自動下載對應庫到我們配置的本地倉庫裏面,如果沒有自動下載,在setting中設置成自動下載即可:

然後現在我們就可以使用那個引用:

import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;

繼承也不報錯了。

好了,今天到這裏吧,後面再來看看這個類是做什麼的,其基類又是什麼,爲什麼要繼承這個基類。

notation.web.configuration.ResourceServerConfigurerAdapter;

繼承也不報錯了。

好了,今天到這裏吧,後面再來看看這個類是做什麼的,其基類又是什麼,爲什麼要繼承這個基類。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章