> 文档中心 > 初次接触Eureka及安全验证所遇到的问题及方案记录

初次接触Eureka及安全验证所遇到的问题及方案记录

前言:在给注册服务后台加安全验证,遇到的一些问题

设置了账密,无法进入后台

loginPage
可以看一下项目启动时控制台有没有默认密码。如果有,很有可能是自定义配置有问题,导致未生效。
初次接触Eureka及安全验证所遇到的问题及方案记录
请尝试使用 账户:user ,密码:控制台默认密码进行登录,如果可以进入,证明确实设置有问题。

我是参考网友的设置,如下

spring:  security:    user:      name: russell  # 用户名      password: 123456  # 用户密码    basic:      enabled: true

但好像有问题,一直在登录界面反复。后来无意间删了spring随便试试:

security:  user:    name: russell  # 用户名    password: 123456  # 用户密码  basic:    enabled: true

如上,security一定顶头,否则报错,然后启动。控制台不再打印默认密码,此时感觉应该生效了,输入账密,成功登录。
servicePage
额外补充:
1.安全校验依赖包

    org.springframework.boot    spring-boot-starter-security

2.其他异常
exceptionOne
这个查资料说是依赖包默认开启了防csrf攻击,需要增加配置类对WebSecurityConfigurerAdapter进行实现,重写对应的方法:
配置类
这里是创建了一个config配置管理类
可以把需要的配置成内部类用来管理(感觉也没啥用,就感觉内部类可以有多个public,觉得神奇),也可以直接将里面的类创建,加上@Configuration注解就可以。另一个注解就是安全注解:@EnableWebSecurity

@EnableWebSecurity  public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {    @Override    public void configure(HttpSecurity http) throws Exception {      // 关闭csrf      http.csrf().disable();      // 开启认证 mvcMatchers("") 配置放行规则  http.authorizeRequests().mvcMatchers("/eureka/").permitAll().anyRequest().authenticated().and().httpBasic();      super.configure(http);    }  }

3.一开始加入配置

<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId>      </dependency>

当时 parent 管理的版本是2.6.0好像。
启动eureka 提示某个类不存在,查资料说是版本问题,更换版本又会引入其他问题。最后参考了博友配置得以解决。完整配置如下(大家可参考parentdependencyManagement标签,这两处对我帮助很大):

   <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>com.russell.eureka</groupId>    <artifactId>eureka</artifactId>    <version>1.0-SNAPSHOT</version>    <packaging>jar</packaging>    <description>eureka project for Spring Boot</description>    <name>springcloud-eureka</name>    <url>https://repo.spring.io/milestone</url>        <parent>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-starter-parent</artifactId>      <version>1.5.2.RELEASE</version>      <relativePath />    </parent>        <properties>      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>      <java.version>1.8</java.version>    </properties>    <dependencies>            <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</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>    </dependencies>        <dependencyManagement>      <dependencies> <dependency>   <groupId>org.springframework.cloud</groupId>   <artifactId>spring-cloud-dependencies</artifactId>   <version>Dalston.RC1</version>   <type>pom</type>   <scope>import</scope> </dependency>      </dependencies>    </dependencyManagement>    <build>      <plugins>  <plugin>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-maven-plugin</artifactId> </plugin>      </plugins>            <finalName>eureka</finalName>    </build>        <repositories>      <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots>   <enabled>false</enabled> </snapshots>      </repository>    </repositories>  </project>

4.解决客户端服务注册问题
在安全验证后,客户端会出现无法连接服务问题
说是在yml配置,将注册服务地址加入用户名:密码@
格式如下:

eureka:  client:    service-url:      defaultZone: http://user:af40b358-77bb-4c4f-b124-19bc18faae4d @127.0.0.1:8100/eureka`在这里插入代码片`在这

至此,可以解决客户端注册服务异常的问题。

目前主要遇见这几个比较棘手的问题,希望有用,能让同样初次接触eureka的你不那么备受折磨哈哈哈。