开发者学堂课程【Spring Security知识精讲与实战演示(四):案例之创建资源服务器准备工作】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/733/detail/13081
案例之创建资源服务器准备工作
父工程创建完成,直接开始来创建资源服务。两个服务是没有先后顺序的,先创建哪一个都可以。
先来创建资源服务,在父工程下创建一个子模块,起名是source,可以在前面加一个前缀叫heima,这就是资源。
这里需要用到的包首先是mvc,相关环境一定要有,需要到Springoauth2boot,start_web寻找一个包。那security_oauth同样也是要,所以这里需要到springboot_start_security中找到包,最重要的一个包,spring-cloud-starter-oauth。这里可能要用到一些数据库相关的操作,要连Myoauth2circle驱动。要指定一个版本,version5.1.47,接下来要用到mybatis相关的包,那到此,资源服务中所用的架包就差不多了。
代码如下:
<?xml version="1.0"oauth2encoding="UTF-8"?>
(projectxmlns="http://maven.apache.org/P0M/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/P0M/4.0.0oauth2http://maven.apache.org/xsd/maven-4.0.0.xsd">oauth2parent>
artifactId>springboot_security_oauth</artifactId(groupIdcomitheima</groupId<version>1.0-SNAPSH0T</version</parent>
<mode1Version>4.0.0</modeVersion
<artifactId>heima_oauth_source</artifactId
<dependencies>
<dependency
(groupId>org.springframework.boot</groupId
<artifactIdspring-boot-starter-web</artifactId</dependency><dependency>
(groupId>org.springframework.boot</groupId
(artifactIdoauth2spring-boot-starter-security</artifactId
I<groupId>org.springframework.boot</groupId
(artifactId>spring-boot-starter-security</artifactId</dependency><dependency>
<groupId>org.springframework.cloud</groupId
<artifactId>spring-cloud-starter- </artifactId<version>2.1.0.RELEASE</version</dependency><dependency>
<groupId>mysql</groupId
<artifactId>mysql-connector-java</artifactId<version>5.1.47</version)</dependency><dependency>
<groupId>org.mybatis.spring.boot</groupId
<artifactIdmybatis-spring-boot-starter</artifactId(version>2.1.0</version)</dependency></dependencies></project>
去创建它的配置文件,application.yml。
因为有多个服务,所以说端口号是要指定的使用9002,数据库里找连接词,springdata,选择mysql驱动包,是url,要注意把springsecurity架包放到刚才用的项目中,所以直接把数据库拿过来,接下来是username这里写root。然后是password写root。之前没有的一个配置main,allow,一定要写上true,进行标注,这个叫允许自己覆盖spring放入到ioc容器的对象。在使用oauth2的时候,也有自己的代码,已经将一些配置放入到ioc容器中,如果再往ioc容器中放,就会出现两个id一模一样的对象。这个时候如果没有这一行配置就会报错,所以要加上。接下来是mybatis相关的配置。写:com.itheima.domain,同样,可以把包先创建出来,新建一个new package,那么接下来是mybatis,最后导入日志,logging,level,这里需要指定一个包,com.itheima.配置文件指定完成。
代码如下:
server:
port:9002spring:
datasource:
driver-class-name:commysql.jdbc.Driverurl:jdbc:mysql:///securityauthority
username:root
password: rootoauth2maoauth2in:
allow-bean-definition-overriding:true
#允许自己覆盖spring放入到IOC容器的对象oauth2mybatis:
type-aliases-package:comitheima.domainoauth2configuration:
map-underscore-to-camel-case:oauth2trueoauth2logging:
level:
com.oauth2itheima:oauth2debug
接下来进行配置类,在com.itheima下直接写oauthsourceapplication,首先写Springbootapplication,接下来写mapperscan(com.itheima.mapper),接下来写public,
packagecomitheima;
importorg.mybatis.spring.annotation.MapperScanimportorg.springframework.boot.SpringApplication;
importorg.springframeworkboot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("comitheima.mapper")
publicclassOauthSourceApplication{
publicstaticvoidmain(String[]args) {
SpringApplication.run(OauthSourceApplication.class, args):}
最后写一个测试的处理器,写一个controller.ProductController.依然是前后端分离,写RestController,这里并不会真的连接数据库,而是做一条假数据,指定一种方式。这样处理器便编写完成。如下:
importorg.springframework.web.bindannotation.GetMapping;
importorg.springframework.webbindannotation.RequestMapping:
importorg.springframework.webbindannotation.RestController;
ORestController
@RequestMapping("/product")
publicoauth2classoauth2ProductControlleroauth2{
@GetMapping("/findA11")publicoauth2Stringoauth2findAl1(){
returnoauth2"
产品列表查询成功!"
I
此时可以启动项目,只不过即便启动项目,也访问不成功,因为已经将springsecurity加入到项目中了,要是用Springboot,直接去访问时,就会导向认证页面,当然现在并没有做任何配置,默认是不能访问,可以做一个请求,这里可以找到是9002,依然用myoauth2workspace,里边是9002,当然token是没有的,可以把它删掉,访问发现是没有登录的一个状态,所以是不能访问,想让他访问,第一就是要登录,第二要作为oauth2的资源端。登录是给用户访问,作为资源端是给其他服务访问。以上就将资源端作为oauth2的一个资源服务器。