2013-07-30 3 views
1

Я разрабатываю приложение в AngularJS для интерфейсного и JavaEE для внутренних. В моем приложении AngularJS я пытаюсь получить доступ к ресурсу REST, предоставленному моим внутренним концом. этот ресурс защищен JAAS, поэтому доступ к ресурсу может получить только аутентифицированные пользователи.Ускоренная аутентификация браузера AngularJS

в моем AngularJS приложение:

$http.get('/webresources/project/').success(function(data){...}).error(function(){...}); 

проект ресурс защищен мой web.xml файл:

... 
<login-config> 
    <auth-method>BASIC</auth-method> 
    <realm-name>file</realm-name> 
</login-config> 

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>Protected Area</web-resource-name> 
     <url-pattern>/webresources/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>user</role-name> 
    </auth-constraint> 
</security-constraint> 
... 

Дело в том, что, когда я пытаюсь получить доступ к этому ресурсу когда он не аутентифицирован, браузер отображает приглашение для входа и мой запрос находится в состоянии ожидания, пока я не нажму Отмените, затем ответ i s 401 с заголовком WWW-Authenticate.

Что я хочу, так это то, что я могу избавиться от приглашения на вход в браузер и показать свою собственную форму входа. Поэтому я нашел некоторые решения, но я не знаю, как их реализовать:

1- Скажите внутреннему контенту, чтобы не отправлять заголовок WWW-Authenticate. Как это сделать на Java?
2- Отправить другой код статуса вместо 401. Правильно ли это. ? если да: как это сделать?

Благодарим за помощь.

+0

ОК Ребята, я нашел что-то странное. Я попытался добавить заголовок «Авторизация», инициализированный значением «Basic» в заголовках запроса: '$ http.defaults.headers.common ['Authorization'] = 'Basic';' и он работает в Firefox (без браузера login приглашение), но в Chrome снова появляется запрос на вход в браузер. – Hurricane13

+0

Вы нашли решение проблемы? У меня есть аналогичная проблема, и я не могу ее исправить. – zip

ответ

1

Вы можете сделать простой трюк:

Создать страницу 401.jsp ошибки и добавить его в web.xml; В ней сделать:

<% 
response.reset(); 
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); 
%> 

Это позволит удалить заголовок WWW-Authenticate из-за сброса, но по-прежнему 401 статус.

Надеюсь, это поможет

Смежные вопросы