2

JSONデータを返し、セキュリティチェックロジックを持たないコントローラーメソッドがあります。

def getJsonData(){
 // return json

}

別のサーバー(クロスドメイン)のphpページからajaxリクエストを行っています。

      $.ajax({
             type: "GET",
             url: "http://localhost:8080/training/getJsonData",
             data: { ListID: '1'},
              dataType: "jsonp",
              success: function(data) {
               alert('Hi'+data);
                $("#success").html(data);

            }
         });

データはサーバーから来ていません。ユーザーがアプリサーバーにログインしている場合にのみ機能します。grails でのログインをチェックせずにこれらのリクエストを処理する方法。

4

2 に答える 2

5

IS_AUTHENTICATED_ANONYMOUSLY次のように、grails アクションの上に追加します。

@Secured('IS_AUTHENTICATED_ANONYMOUSLY')
def getJsonData() {
    ....
}

編集................................................. ...................................................

OK では、構成ファイルで URL マッピングを使用している可能性があります ( Config.groovy の Simple Map )。のようにそこに変更

grails.plugins.springsecurity.interceptUrlMap = [
    ...
    '/training/getJsonData/**': ['IS_AUTHENTICATED_ANONYMOUSLY'],
    ...
]
于 2013-09-16T11:45:18.633 に答える
1

これは、アプリケーションが Spring Security でどのように構成されているかによって異なります。

デフォルト構成を使用している場合:

grails.plugins.springsecurity.securityConfigType = "Annotation"

getJsonDataアクションのメソッドにアノテーションを付けるか@Secured('IS_AUTHENTICATED_ANONYMOUSLY')、Config.groovy に構成を入れることができます。

grails.plugins.springsecurity.controllerAnnotations.staticRules = [
   '/training/getJsonData/**': ['IS_AUTHENTICATED_ANONYMOUSLY'],
]

それ以外の場合、InterceptUrlMap を使用している場合:

grails.plugins.springsecurity.securityConfigType = "InterceptUrlMap"

次のように、interceptUrlMap でエントリを構成する必要があります

grails.plugins.springsecurity.interceptUrlMap = [
   '/training/getJsonData/**':    ['IS_AUTHENTICATED_ANONYMOUSLY'],
   // ...
]

Spring Security プラグインのドキュメント の適切なセクションを確認してください。

また、コントローラーで名前が付けられたメソッドの使用にも注意してくださいgetFoo。これらのメソッドは、コントローラーの作成時に呼び出されます。これは、Grails wiki の Gotchas ページに記載されています。問題を回避するために、おそらくメソッドの名前を変更する必要があります。

于 2013-09-16T11:49:53.073 に答える