1

コントローラーを保護するためにGrails2.0.3と最新のSpringSecurityプラグインを使用しています。

しかし、どういうわけかコントローラーは保護されていません。

import grails.plugins.springsecurity.Secured

@Secured("ROLE_USER")
class SettingsController extends UtilController {
  def index(){
    render "should not run while not logged in"
  }
}

ログインしているときとログインしていないときは、メッセージが表示されます。springSecurityServiceを挿入すると、正しいログインステータス(true / false)が表示されるため、アノテーションは処理されません。

「IS_AUTHENTICATED_FULLY」要件を追加して、アノテーションをメソッドに移動しようとしましたが、役に立ちません。

それは何と関係があるのでしょうか?

4

4 に答える 4

5

@Securedアノテーションはロールのリスト(String[])を受け入れますが、文字列を文字列の配列に変換する際に問題があると思います。

試してみ@Secured(["ROLE_USER"])ませんか?

于 2012-05-04T11:52:42.360 に答える
5

以外のものはありますか

    grails.plugins.springsecurity.securityConfigType = "Annotation"

設定ファイルで?

于 2012-05-05T07:30:23.070 に答える
0

私の場合の解決策を見つけました。grails.plugins.springsecurityのリストにfilterInvocationInterceptorが含まれていることを確認してください。例のようなConfig.groovyのfilterNames:

grails.plugins.springsecurity.filterChain.filterNames = [
   'securityContextPersistenceFilter', 'logoutFilter',
   'authenticationProcessingFilter', 'myCustomProcessingFilter',
   'rememberMeAuthenticationFilter', 'anonymousAuthenticationFilter',
   'exceptionTranslationFilter', 'filterInvocationInterceptor'
]
于 2012-08-17T14:02:04.173 に答える
-3

@securedアノテーションは、クラスではなく、コントローラー内のメソッドに対してのみ機能すると思います。

次のように使用してみてください。

import grails.plugins.springsecurity.Secured

class SettingsController extends UtilController {
  @Secured(["ROLE_USER"])
  def index(){
    render "should not run while not logged in"
  }
}
于 2012-05-05T04:35:38.917 に答える