Spring Boot - Microservice - Zuul - Защищенная аннотация - PullRequest
1 голос
/ 01 июня 2019

У меня Zuul Proxy в качестве приложения шлюза, запущенного в 8080 году, и Project Application, запущенного в качестве микросервиса в 8090. Я пытаюсь создать проект через Rest Controller, но когда я пытаюсь получить доступ к URL-адресу, у меня возникает проблема отказа в доступеи получая ответ как 401.

Project Micro-Service

Project Application

@EnableGlobalMethodSecurity(securedEnabled = true)
@EnableDiscoveryClient
@SpringBootApplication(scanBasePackages = "packagename")
public class ProjectApplication {

    public static void main(String[] args) {
        SpringApplication.run(ProjectApplication.class, args);
    }

}

Если я комментирую аннотацию GlobalSecurity, она работает отлично.Но проверка полномочий не происходит.

ProjectController

@CrossOrigin(origins = "*", maxAge = 3600)
@RestController
@RequestMapping(value = ApplicationConstant.API_PATH_PROJECT)
public class ProjectController {

    private static final Logger logger = LoggerFactory.getLogger(ProjectController.class);

    @Autowired
    ProjectService projectService;

    @Secured({ RoleConstant.ROLE_ADMIN_PROJECT})
    @Transactional(rollbackFor = { Exception.class })
    @RequestMapping(value = ApplicationConstant.API_PATH_CREATE, method = RequestMethod.POST)
    public ResponseEntity<?> create(@ModelAttribute ProjectRequest projectRequest, HttpServletRequest request)
            throws ApiException, IOException, ParseException {
     ....
 }
}

Свойства шлюза / Zuul

server.port=8080

eureka.client.enabled=true
eureka.client.eureka-server-port=8761
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka
eureka.client.fetch-registry=true
eureka.client.register-with-eureka=true
eureka.instance.prefer-ip-address=true

#zuul.ignored-headers=Access-Control-Allow-Credentials, Access-Control-Allow-Origin
zuul.sensitive-headers=Cookie,Set-Cookie,Authorization

Свойство Discovery Microservice

spring.jpa.hibernate.ddl-auto=none
spring.datasource.url=jdbc:mysql://localhost:3306/XXXXXXX
spring.datasource.username=root
spring.datasource.password=XXXXXXXXX

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

#spring.jackson.serialization.FAIL_ON_EMPTY_BEANS=false

server.port = 8094

eureka.client.eureka-server-port=8761
eureka.client.serviceUrl.defaultZone = http://discUser:discPassword@localhost:8761/eureka
eureka.client.fetch-registry=true
eureka.client.register-with-eureka=true
eureka.instance.prefer-ip-address=true
...