Люди, у меня есть система, написанная на grails, которая использует плагин Spring Security Core. Теперь я создал клиент Android (Java) для доступа к некоторым данным через HTTP. Сначала мой код блокировался системой безопасности Spring, когда я использовал следующий код:
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-авторизации, и это сработало, клиент отправил запрос, и ответ был в порядке. Но теперь моя страница входа в систему не работает, если пользователь не вошел в систему, ему показывают «базовый» экран логина / пароля по умолчанию, а не мою пользовательскую страницу входа.
если это поможет, клиентский код, который "работает" ниже ...
// 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);