使用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;

继承也不报错了。

好了,今天到这里吧,后面再来看看这个类是做什么的,其基类又是什么,为什么要继承这个基类。





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