人、私はSpring Security Coreプラグインを利用するシステムをgrailsで作成しました。今度はHTTP経由でデータにアクセスするためにAndroid(Java)クライアントを作成しました。最初は私のコードは、私は以下のコードを使用していたとき、スプリングセキュリティによってブロックされていました:自己登録Grailsはhttp(Androidクライアント)経由でアクセスします
DefaultHttpClient httpClient = new DefaultHttpClient();
CredentialsProvider credProvider = new BasicCredentialsProvider(); credProvider.setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), new UsernamePasswordCredentials("LOGIN", "PWD");
httpClient.setCredentialsProvider(credProvider);
それは、ログインページに私をリダイレクトされたが、その後、私の友人は、BASICを使用するために、サーバーとクライアントを構成しHTTP認証が有効になっていて、クライアントが要求を送信し、応答がOKでした。しかし、私のログインページは動作していません。ユーザーがログインしていない場合、カスタマイズされたログインページではなく、デフォルトの「基本」ログイン/パスワード画面が表示されます。
それがどんなであれば
// HTTP Authentication
// Type of authentication
List<String> authPrefs = new ArrayList<String>(2);
authPrefs.add(AuthPolicy.BASIC);
httpclient.getParams().setParameter("http.auth.scheme-pref", authPrefs);
httpclient.getCredentialsProvider().setCredentials(new AuthScope(urlHost, urlPort),new UsernamePasswordCredentials("login", "pwd"));
//Preemptive mode
BasicHttpContext localcontext = new BasicHttpContext();
BasicScheme basicAuth = new BasicScheme();
localcontext.setAttribute("preemptive-auth", basicAuth);
httpContext = localcontext;
AbstractHttpMessage method = null;
method = new HttpGet(urlStr);
method.setParams(new BasicHttpParams().setParameter(urlStr, url));
// Now Execute:
HttpResponse httpResponse = httpclient.execute((HttpUriRequest) method, httpContext);