I tried this already...
$httpProvider.interceptors.push(function () {
return {
'responseError': function (rejection) {
var s = rejection.status;
return rejection;
}
};
});
But the repsonseError function is called after successful login or cancel of
the login-dialog... so that does not work if the server sends a
WWW-Authenticate: BASIC.... challenge to the browser. :-/
-----Ursprüngliche Nachricht-----
Von: Christopher Schultz [mailto:[email protected]]
Gesendet: Donnerstag, 29. Oktober 2015 15:02
An: Tomcat Users List <[email protected]>
Betreff: Re: AW: Suppress or replace WWW-Authorization header
Chris,
On 10/29/15 5:12 AM, chris derham wrote:
>>> Torsten,
>>>
>>> Add an interceptor to AngularJS to detect the 401 and do whatever
>>> you want, e.g. redirect to a login page. Then when you have the
>>> credentials, submit to login rest api, get a token, and then make
>>> all other calls passing this token.
>>>
>>> There are loads of examples on how to do this on the internet. This
>>> isn't tomcat specific.
>>>
>>> function globalInterceptorResponse($injector, $q) {
>>> return {
>>> 'response': function (response) {
>>> return response;
>>> },
>>> 'responseError': function (rejection) {
>>> switch (rejection.status) { ...
>>> case 401:
>>> console.warn("Hit 401 - redirecting to login");
>>> window.location = '/login';
>>> break;
>>> ...
>>> default:
>>> console.warn(rejection);
>>> }
>>> return $q.reject(rejection);
>>> }
>>> };
>>> }
>>> globalInterceptorResponse.$inject = ['$injector', '$q'];
>>>
>>> then in request config,
>>>
>>> $httpProvider.interceptors.push(globalInterceptorResponse);
>>
>> This won't work because the application doesn't get a chance to do
>> anything until Tomcat completes its authentication/authorization work.
>> If the application were handling the authentication/authorization,
>> then the original Filter would have worked.
>>
>> -chris
>
> Chris,
>
> I think that you thought the above was server-side java code. The
> above was javascript code that runs in the browser. It does work - I
> copied it from a project I am working on now.
Yes, I was missing the fact that parts (or all?) of AngularJS run on the
client. Thanks for clarifying that bit.
-chris
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]