Ошибка безопасности Grails 3.0 и Spring

В моем build.gradle я добавил эту строку кода

 dependencies {

    compile "org.grails.plugins:spring-security-core:3.0.3"

   }

Затем, когда я пытаюсь использовать его

    import grails.plugin.springsecurity.annotation.Secured

    @Secured('ROLE_ADMIN')
     class SecureController {
def index() {
    render 'Secure access only'
}

Он «не может разрешить символ springsecurity», я получаю сообщение об ошибке

 Error:(5, 1) Groovyc: unable to resolve class Secured ,  unable to find class for annotation

Любая помощь приветствуется.

введите здесь описание изображения

Build.gradle **** РЕДАКТИРОВАТЬ

Это весь файл build.gradle

    buildscript {
    ext {
    grailsVersion = project.grailsVersion
}
repositories {
    mavenLocal()
    maven { url "https://repo.grails.org/grails/core" }
}
dependencies {
    classpath "org.grails:grails-gradle-plugin:$grailsVersion"
    classpath 'com.bertramlabs.plugins:asset-pipeline-gradle:2.5.0'
    classpath "org.grails.plugins:hibernate:4.3.10.5"
       }
   }

plugins {
id "io.spring.dependency-management" version "0.5.4.RELEASE"
}

  version "0.1"
  group "securityrolesspring"

    apply plugin: "spring-boot"
   apply plugin: "war"
   apply plugin: "asset-pipeline"
   apply plugin: 'eclipse'
   apply plugin: 'idea'
   apply plugin: "org.grails.grails-web"
   apply plugin: "org.grails.grails-gsp"

  ext {
 grailsVersion = project.grailsVersion
       gradleWrapperVersion = project.gradleWrapperVersion
       }

      assets {
       minifyJs = true
       minifyCss = true
      }

 repositories {
       mavenLocal()
maven { url "https://repo.grails.org/grails/core" }

}

  dependencyManagement {
imports {
    mavenBom "org.grails:grails-bom:$grailsVersion"
}
  applyMavenExclusions false
      }

dependencies {
compile "org.grails.plugins:spring-security-core:3.0.3"
compile "org.springframework.boot:spring-boot-starter-logging"
compile "org.springframework.boot:spring-boot-starter-actuator"
compile "org.springframework.boot:spring-boot-autoconfigure"
compile "org.springframework.boot:spring-boot-starter-tomcat"
compile "org.grails:grails-dependencies"
compile "org.grails:grails-web-boot"

compile "org.grails.plugins:hibernate"
   compile "org.grails.plugins:cache"
   compile "org.hibernate:hibernate-ehcache"
   compile "org.grails.plugins:scaffolding"

   runtime "org.grails.plugins:asset-pipeline"

  testCompile "org.grails:grails-plugin-testing"
  testCompile "org.grails.plugins:geb"

      // Note: It is recommended to update to a more robust driver    (Chrome,        Firefox etc.)
testRuntime 'org.seleniumhq.selenium:selenium-htmlunit-driver:2.44.0'

console "org.grails:grails-console"
 }

      task wrapper(type: Wrapper) {
       gradleVersion = gradleWrapperVersion
}

person hat_to_the_back    schedule 03.02.2016    source источник
comment
Вы добавили зависимость компиляции в существующий блок зависимостей или создали новый блок зависимостей только с этой строкой?   -  person droggo    schedule 04.02.2016
comment
Существующий блок зависимостей, имеет ли это значение @droggo   -  person hat_to_the_back    schedule 04.02.2016
comment
Если есть, то должно быть хорошо. Попробуйте скомпилировать проект с помощью gradle вместо IDE. например gradlew classes в папке проекта. Если ошибка такая же, можете ли вы предоставить весь build.gradle?   -  person droggo    schedule 04.02.2016
comment
Как мне скомпилировать проект только с помощью gradle? Я новичок в этом @droggo   -  person hat_to_the_back    schedule 04.02.2016
comment
И да, сейчас я обновлю весь build.gradle @droggo   -  person hat_to_the_back    schedule 04.02.2016
comment
У вас должно быть gradlew.bat или gradlew файлов в папке вашего проекта, просто откройте эту папку с помощью терминала и выполните gradlew classes   -  person droggo    schedule 04.02.2016
comment
Извините, но я не уверен, как это сделать, не могли бы вы дать мне несколько более подробных шагов. Я тоже использую Windows, спасибо @droggo   -  person hat_to_the_back    schedule 04.02.2016
comment
Давайте продолжим обсуждение в чате.   -  person droggo    schedule 04.02.2016
comment
Привет, да, я в чате, спасибо @droggo   -  person hat_to_the_back    schedule 04.02.2016
comment
Я снова добавил в обсуждение @droggo   -  person hat_to_the_back    schedule 04.02.2016


Ответы (3)


после «применить плагин: «война»» добавить строку, которая гласит: применить плагин: «maven»

в разделе ваших репозиториев после "mavenLocal()" добавьте строку, которая гласит: mavenCentral()

эта последняя рекомендация носит косметический характер, но я бы переместил вашу строку: скомпилировать "org.grails.plugins:spring-security-core:3.0.3"

и поместите его после строки компиляции «org.grails.plugins:scaffolding». хорошим тоном будет сохранить первоначальный набор зависимостей Grails почти так же, как и исходную команду «grails create-app». исключение из этого правила — если вы хотите заменить ведение журнала на что-то другое, но это уже другая история.

наконец, вы также можете изменить свою зависимость spring-security-core на версию 3.0.4, которая уже вышла.

person fcnorman    schedule 06.04.2016

В ядре безопасности Spring обновлено расположение пакета для аннотаций @Secured. Я использую Grails 3.2.3 и Spring Security Core 3.1.1 в своем проекте и работает хорошо. Ниже приведена конфигурация, которую я использовал, и она работает так же, как и в предыдущей версии Spring Security Core и Grails (2.X).

Для установки вам необходимо добавить запись в блок зависимостей, если ваш файл build.gradle. Подробности в официальной документации для раздела установки для Spring. Ядро безопасности

dependencies {
   ...
   compile 'org.grails.plugins:spring-security-core:3.1.1'
   ...

Чтобы использовать защищенные аннотации в вашем контроллере, были обновлены пакет импорта (org.springframework.security.access.annotation.Secured) и аннотация @Secure, которую вы должны присвоить «значению» оператора безопасности, который вы хотите сделать. Например, аннотация для @Secured('ROLE_ADMIN') должна измениться, как в следующем примере.

import org.springframework.security.access.annotation.Secured

@Secured(value=["hasRole('ROLE_ADMIN')"])
class SecureController {
    def index() {
    render 'Secure access only'
}

Подробная конфигурация находится на официальной странице документации, обновления для защищенных аннотаций в версии 3 и как определить защищенные аннотации.

person Jose Luis Bracamonte Amavizca    schedule 10.12.2016

Импортируя

import grails.plugin.springsecurity.annotation.Secured

вы сможете решить свою проблему.

Он снова скажет, что не может разрешить символ «Защищено», но вам нужно игнорировать его, потому что код будет работать полностью в соответствии с вашими ожиданиями.

person Paritosh Pandey    schedule 31.07.2017