0

Alvaro の greach2014 リポジトリを使用して、Spring Security Rest プラグインの動作を実験しています。アプリケーションにログインして認証トークンを生成できます。ただし、get リクエストを送信しようとすると、ログイン ページにリダイレクトされます。ここに私のcURL応答があります

curl -X GET -i -H "X-Auth-Token: Bearer 6mp70e1h702ig5lp5l4j2dlbdbh5aiip" -H "Accept: application/json" http://localhost:8080/restful-grails-springsecurity-greach2014/categories HTTP/1.1 302 Found Server: Apache-Coyote/1.1 Set-Cookie: JSESSIONID=7D36AB88B14828CDB7085BBB8722A35F; Path=/restful-grails-springsecurity-greach2014/; HttpOnly Location: http://localhost:8080/restful-grails-springsecurity-greach2014/login/auth Content-Length: 0 Date: Tue, 07 Jul 2015 05:59:16 GMT

Bearer フラグも試してみましたが、結果は同じです

curl -X GET -i -H "X-Auth-Token: Bearer 6mp70e1h702ig5lp5l4j2dlbdbh5aiip" -H "Accept: application/json" http://localhost:8080/restful-grails-springsecurity-greach2014/categories

同様に、Authorization Bearer ヘッダーも試しましたが、タイムアウト例外が発生しました。

``` curl -X GET -i -H "Authorization: Bearer 6mp70e1h702ig5lp5l4j2dlbdbh5aiip" -H "Accept: application/json" http://localhost:8080/restful-grails-springsecurity-greach2014/categories HTTP/1.1 500 Internal Server Errorサーバー: Apache-Coyote/1.1 Content-Type: text/html;charset=utf-8 Content-Language: en Content-Length: 4472 Date: Tue, 07 Jul 2015 05:59:46 GMT Connection: close

Apache Tomcat/7.0.52 - エラー レポート

HTTP ステータス 500 - 値を待っているタイムアウト

タイプ例外レポート

値を待っているメッセージのタイムアウト

説明サーバーで内部エラーが発生したため、この要求を実行できませんでした。

例外

net.spy.memcached.OperationTimeoutException: 値を待っているタイムアウト
    net.spy.memcached.MemcachedClient.getAndTouch(MemcachedClient.java:1179)
    net.spy.memcached.MemcachedClient.getAndTouch(MemcachedClient.java:1196)
    grails.plugin.springsecurity.rest.token.storage.MemcachedTokenStorageService.findExistingUserDetails(MemcachedTokenStorageService.groovy:64)
    grails.plugin.springsecurity.rest.token.storage.MemcachedTokenStorageService.loadUserByToken(MemcachedTokenStorageService.groovy:37)
    grails.plugin.springsecurity.rest.RestAuthenticationProvider.authenticate(RestAuthenticationProvider.groovy:55)
    grails.plugin.springsecurity.rest.RestTokenValidationFilter.doFilter(RestTokenValidationFilter.groovy:75)
    grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.java:53)
    grails.plugin.springsecurity.rest.RestAuthenticationFilter.doFilter(RestAuthenticationFilter.groovy:139)
    grails.plugin.springsecurity.web.authentication.RequestHolderAuthenticationFilter.doFilter(RequestHolderAuthenticationFilter.java:53)
    grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.java:62)
    grails.plugin.springsecurity.rest.RestLogoutFilter.doFilter(RestLogoutFilter.groovy:80)
    com.brandseye.cors.CorsFilter.doFilter(CorsFilter.java:82)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    java.lang.Thread.run(Thread.java:745)

根本的な原因

net.spy.memcached.internal.CheckedOperationTimeoutException: 操作の待機中にタイムアウトしました - ノードの失敗: localhost/127.0.0.1:11211
    net.spy.memcached.internal.OperationFuture.get(OperationFuture.java:167)
    net.spy.memcached.MemcachedClient.getAndTouch(MemcachedClient.java:1168)
    net.spy.memcached.MemcachedClient.getAndTouch(MemcachedClient.java:1196)
    grails.plugin.springsecurity.rest.token.storage.MemcachedTokenStorageService.findExistingUserDetails(MemcachedTokenStorageService.groovy:64)
    grails.plugin.springsecurity.rest.token.storage.MemcachedTokenStorageService.loadUserByToken(MemcachedTokenStorageService.groovy:37)
    grails.plugin.springsecurity.rest.RestAuthenticationProvider.authenticate(RestAuthenticationProvider.groovy:55)
    grails.plugin.springsecurity.rest.RestTokenValidationFilter.doFilter(RestTokenValidationFilter.groovy:75)
    grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.java:53)
    grails.plugin.springsecurity.rest.RestAuthenticationFilter.doFilter(RestAuthenticationFilter.groovy:139)
    grails.plugin.springsecurity.web.authentication.RequestHolderAuthenticationFilter.doFilter(RequestHolderAuthenticationFilter.java:53)
    grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.java:62)
    grails.plugin.springsecurity.rest.RestLogoutFilter.doFilter(RestLogoutFilter.groovy:80)
    com.brandseye.cors.CorsFilter.doFilter(CorsFilter.java:82)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    java.lang.Thread.run(Thread.java:745)

note根本原因の完全なスタック トレースは、Apache Tomcat/7.0.52 ログで入手できます。

アパッチ トムキャット/7.0.52

4

1 に答える 1

0

正しい使い方は curl -X GET -i -H "Authorization: Bearer 6mp70e1h702ig5lp5l4j2dlbdbh5aiip" -H "Accept: application/json" http://localhost:8080/restful-grails-springsecurity-greach2014/categories

memcached をローカルで実行していなかったため、例外がスローされました。幸いなことに、ubuntu の担当者には 1 つあり、apt-get install memcached と sudo service memcached start を使用するだけで済みました。すべてがうまくいきました。

于 2015-07-08T12:11:58.110 に答える