spring cloud 应用连接开启鉴权的nacos 的一个坑(鉴权失败)

 Nacos开启鉴权之后,bootstrap.yml增加spring.cloud.nacos.config.username 和 password,如下:

spring:
  application:
    name: @artifactId@
    active: test
  cloud:
    nacos:
      config:
        server-addr: ${NACOS_HOST:192.168.21.60:8848}
        namespace: ${NACOS_NAMESPACE:xxx-xxx-xxx}
        username: ${NACOS_USERNAME:nacos}
        password: ${NACOS_PASSWORD:nacos}

但应用启动时,总是出错403,鉴权失败。

  • 排错过程:

先做一个简单的logback配置文件logger-debug.xml,把nacos的日志输出设置的详细一些:


<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} %L - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="com.alibaba.cloud.nacos" level="TRACE">
        <appender-ref ref="STDOUT"/>
    </logger>

    <root level="INFO">
        <appender-ref ref="STDOUT"/>
    </root>
</configuration>

 启动时指定这个日志文件:java -Dlogger.config=logger-debug.xml -jar myapp.jar

可可以看到在 HttpLoginProcessor 这个类的 78行 ,登录认证时错了个异常:

login failed: {"code":404,"message":"<!doctype html><html lang=\"en\"><head><title>HTTP Status 404 – Not Found</title><style type=\"text/css\">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 404 – Not Found</h1></body></html>

代码如图:

可以看到登录的url拼上了一个 contextPath,上溯代码可知,对应配置 spring.cloud.nacos.config.context-path。加上即可:

context-path: /nacos

简单记录供参考。

Spring Cloud中配置Nacos可以通过以下步骤进行: 1. 首先,确保你已经成功安装和启动了Nacos服务。你可以参考Nacos官方文档来完成这一步骤。 2. 在你的Spring Cloud项目中,添加Nacos的相关依赖。在`pom.xml`文件中添加以下依赖: ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> ``` 3. 创建一个`bootstrap.yml`或`bootstrap.properties`文件,用于配置Nacos的相关属性。在该文件中添加以下配置: ```yaml spring: cloud: nacos: config: server-addr: ${NACOS_SERVER_ADDR:localhost:8848} group: ${NACOS_CONFIG_GROUP:DEFAULT_GROUP} namespace: ${NACOS_CONFIG_NAMESPACE:} username: ${NACOS_CONFIG_USERNAME:} password: ${NACOS_CONFIG_PASSWORD:} ``` 你可以根据需要修改上述配置,例如更改Nacos服务地址、配置组、命名空间,以及添加用户名和密码。 4. 在你的应用程序中,使用`@Value`注解将Nacos配置注入到对应的属性中。例如: ```java import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class MyComponent { @Value("${my.property}") private String myProperty; // ... } ``` 上述示例中,`${my.property}`对应于Nacos中配置的属性名。 5. 确保你的应用程序可以访问Nacos服务。如果你的应用程序需要进行,可以在Nacos的管理控制台中创建相关的限和角色,并将对应的用户名和密码配置到`bootstrap.yml`或`bootstrap.properties`文件中。 这样,通过以上步骤配置了Nacos后,你的Spring Cloud应用程序就可以使用Nacos作为配置中心,并且能够进行操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值