Angular login withCredentials:true doesnt work
Logging in using restAPIfails in browser , but works in postman.
here is my angular code for login, which throws me 401
login(username: string, password: string) {
const httpHeaders = new HttpHeaders()
.set('Accept', 'application/json')
.set('Content-Type', 'application/x-www-form-urlencoded');
return this.http.post<any>(environment.apiUrl + '/api/core/login',
JSON.stringify({ 'username': username, 'password': password }), {withCredentials: true, headers: httpHeaders})
.pipe(map(response => {
// login successful if there's a jwt token in the response
const token = response.headers.get('Lemon-Authorization');
if (response.status === 200 && token) {
// store user details and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('authHeader', 'Bearer ' + token);
this.currentUserSubject.next(response.body.user);
}
return response.body.user;
}));
}
401 in chrome:
faliure in chrome
200 OK in postman :
success in postman
what am i missing?
angular http spring-lemon
add a comment |
Logging in using restAPIfails in browser , but works in postman.
here is my angular code for login, which throws me 401
login(username: string, password: string) {
const httpHeaders = new HttpHeaders()
.set('Accept', 'application/json')
.set('Content-Type', 'application/x-www-form-urlencoded');
return this.http.post<any>(environment.apiUrl + '/api/core/login',
JSON.stringify({ 'username': username, 'password': password }), {withCredentials: true, headers: httpHeaders})
.pipe(map(response => {
// login successful if there's a jwt token in the response
const token = response.headers.get('Lemon-Authorization');
if (response.status === 200 && token) {
// store user details and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('authHeader', 'Bearer ' + token);
this.currentUserSubject.next(response.body.user);
}
return response.body.user;
}));
}
401 in chrome:
faliure in chrome
200 OK in postman :
success in postman
what am i missing?
angular http spring-lemon
add a comment |
Logging in using restAPIfails in browser , but works in postman.
here is my angular code for login, which throws me 401
login(username: string, password: string) {
const httpHeaders = new HttpHeaders()
.set('Accept', 'application/json')
.set('Content-Type', 'application/x-www-form-urlencoded');
return this.http.post<any>(environment.apiUrl + '/api/core/login',
JSON.stringify({ 'username': username, 'password': password }), {withCredentials: true, headers: httpHeaders})
.pipe(map(response => {
// login successful if there's a jwt token in the response
const token = response.headers.get('Lemon-Authorization');
if (response.status === 200 && token) {
// store user details and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('authHeader', 'Bearer ' + token);
this.currentUserSubject.next(response.body.user);
}
return response.body.user;
}));
}
401 in chrome:
faliure in chrome
200 OK in postman :
success in postman
what am i missing?
angular http spring-lemon
Logging in using restAPIfails in browser , but works in postman.
here is my angular code for login, which throws me 401
login(username: string, password: string) {
const httpHeaders = new HttpHeaders()
.set('Accept', 'application/json')
.set('Content-Type', 'application/x-www-form-urlencoded');
return this.http.post<any>(environment.apiUrl + '/api/core/login',
JSON.stringify({ 'username': username, 'password': password }), {withCredentials: true, headers: httpHeaders})
.pipe(map(response => {
// login successful if there's a jwt token in the response
const token = response.headers.get('Lemon-Authorization');
if (response.status === 200 && token) {
// store user details and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('authHeader', 'Bearer ' + token);
this.currentUserSubject.next(response.body.user);
}
return response.body.user;
}));
}
401 in chrome:
faliure in chrome
200 OK in postman :
success in postman
what am i missing?
angular http spring-lemon
angular http spring-lemon
edited Nov 22 '18 at 1:24
Sanjay
5,4682951
5,4682951
asked Nov 21 '18 at 23:50
Nagasagar DsNagasagar Ds
184
184
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
I think the reason could be that you are JSON stingifying the request body, whereas it should be application/x-www-form-urlencoded
, i.e. username=abc&password=xyz
. You could look at working Spring Lemon demo code for such issues, e.g. this one.
yes, that worked.
– Nagasagar Ds
Nov 22 '18 at 6:36
add a comment |
I believe you are facing a known CORS
problem. The reason it works on postman is because It doesn’t do the called preflight
request that the browsers do when you send authentication headers.
You will probably see in your requests in the browser that the failed request is an OPTIONS
and not a ‘POST’. If that’s the case it means your server configuration is lacking CORS
configurations.
thank you for your answer. i had cors cofigurationofmy server correct, i only messed up to specify Angular to POST using x-www-form-urlencoded
– Nagasagar Ds
Nov 22 '18 at 6:42
add a comment |
here is working code :
login(username: string, password: string) {
const body = new URLSearchParams();
body.set('username', username);
body.set('password', password);
const options = {
headers: new HttpHeaders()
.set('Accept', 'application/json')
.set('Content-Type', 'application/x-www-form-urlencoded'),
withCredentials: true
};
return this.http.post<any>(environment.apiUrl + '/api/core/login',
body.toString(), options)
.pipe(map(response => {
// login successful if there's a jwt token in the response
const token = response.headers.get('Lemon-Authorization');
if (response.status === 200 && token) {
// store user details and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('authHeader', 'Bearer ' + token);
this.currentUserSubject.next(response.body.user);
}
return response.body.user;
}));
}
more info here -
How to force Angular2 to POST using x-www-form-urlencoded
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53422050%2fangular-login-withcredentialstrue-doesnt-work%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
I think the reason could be that you are JSON stingifying the request body, whereas it should be application/x-www-form-urlencoded
, i.e. username=abc&password=xyz
. You could look at working Spring Lemon demo code for such issues, e.g. this one.
yes, that worked.
– Nagasagar Ds
Nov 22 '18 at 6:36
add a comment |
I think the reason could be that you are JSON stingifying the request body, whereas it should be application/x-www-form-urlencoded
, i.e. username=abc&password=xyz
. You could look at working Spring Lemon demo code for such issues, e.g. this one.
yes, that worked.
– Nagasagar Ds
Nov 22 '18 at 6:36
add a comment |
I think the reason could be that you are JSON stingifying the request body, whereas it should be application/x-www-form-urlencoded
, i.e. username=abc&password=xyz
. You could look at working Spring Lemon demo code for such issues, e.g. this one.
I think the reason could be that you are JSON stingifying the request body, whereas it should be application/x-www-form-urlencoded
, i.e. username=abc&password=xyz
. You could look at working Spring Lemon demo code for such issues, e.g. this one.
answered Nov 22 '18 at 1:32
SanjaySanjay
5,4682951
5,4682951
yes, that worked.
– Nagasagar Ds
Nov 22 '18 at 6:36
add a comment |
yes, that worked.
– Nagasagar Ds
Nov 22 '18 at 6:36
yes, that worked.
– Nagasagar Ds
Nov 22 '18 at 6:36
yes, that worked.
– Nagasagar Ds
Nov 22 '18 at 6:36
add a comment |
I believe you are facing a known CORS
problem. The reason it works on postman is because It doesn’t do the called preflight
request that the browsers do when you send authentication headers.
You will probably see in your requests in the browser that the failed request is an OPTIONS
and not a ‘POST’. If that’s the case it means your server configuration is lacking CORS
configurations.
thank you for your answer. i had cors cofigurationofmy server correct, i only messed up to specify Angular to POST using x-www-form-urlencoded
– Nagasagar Ds
Nov 22 '18 at 6:42
add a comment |
I believe you are facing a known CORS
problem. The reason it works on postman is because It doesn’t do the called preflight
request that the browsers do when you send authentication headers.
You will probably see in your requests in the browser that the failed request is an OPTIONS
and not a ‘POST’. If that’s the case it means your server configuration is lacking CORS
configurations.
thank you for your answer. i had cors cofigurationofmy server correct, i only messed up to specify Angular to POST using x-www-form-urlencoded
– Nagasagar Ds
Nov 22 '18 at 6:42
add a comment |
I believe you are facing a known CORS
problem. The reason it works on postman is because It doesn’t do the called preflight
request that the browsers do when you send authentication headers.
You will probably see in your requests in the browser that the failed request is an OPTIONS
and not a ‘POST’. If that’s the case it means your server configuration is lacking CORS
configurations.
I believe you are facing a known CORS
problem. The reason it works on postman is because It doesn’t do the called preflight
request that the browsers do when you send authentication headers.
You will probably see in your requests in the browser that the failed request is an OPTIONS
and not a ‘POST’. If that’s the case it means your server configuration is lacking CORS
configurations.
answered Nov 22 '18 at 0:19
Hugo NoroHugo Noro
1,6401515
1,6401515
thank you for your answer. i had cors cofigurationofmy server correct, i only messed up to specify Angular to POST using x-www-form-urlencoded
– Nagasagar Ds
Nov 22 '18 at 6:42
add a comment |
thank you for your answer. i had cors cofigurationofmy server correct, i only messed up to specify Angular to POST using x-www-form-urlencoded
– Nagasagar Ds
Nov 22 '18 at 6:42
thank you for your answer. i had cors cofigurationofmy server correct, i only messed up to specify Angular to POST using x-www-form-urlencoded
– Nagasagar Ds
Nov 22 '18 at 6:42
thank you for your answer. i had cors cofigurationofmy server correct, i only messed up to specify Angular to POST using x-www-form-urlencoded
– Nagasagar Ds
Nov 22 '18 at 6:42
add a comment |
here is working code :
login(username: string, password: string) {
const body = new URLSearchParams();
body.set('username', username);
body.set('password', password);
const options = {
headers: new HttpHeaders()
.set('Accept', 'application/json')
.set('Content-Type', 'application/x-www-form-urlencoded'),
withCredentials: true
};
return this.http.post<any>(environment.apiUrl + '/api/core/login',
body.toString(), options)
.pipe(map(response => {
// login successful if there's a jwt token in the response
const token = response.headers.get('Lemon-Authorization');
if (response.status === 200 && token) {
// store user details and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('authHeader', 'Bearer ' + token);
this.currentUserSubject.next(response.body.user);
}
return response.body.user;
}));
}
more info here -
How to force Angular2 to POST using x-www-form-urlencoded
add a comment |
here is working code :
login(username: string, password: string) {
const body = new URLSearchParams();
body.set('username', username);
body.set('password', password);
const options = {
headers: new HttpHeaders()
.set('Accept', 'application/json')
.set('Content-Type', 'application/x-www-form-urlencoded'),
withCredentials: true
};
return this.http.post<any>(environment.apiUrl + '/api/core/login',
body.toString(), options)
.pipe(map(response => {
// login successful if there's a jwt token in the response
const token = response.headers.get('Lemon-Authorization');
if (response.status === 200 && token) {
// store user details and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('authHeader', 'Bearer ' + token);
this.currentUserSubject.next(response.body.user);
}
return response.body.user;
}));
}
more info here -
How to force Angular2 to POST using x-www-form-urlencoded
add a comment |
here is working code :
login(username: string, password: string) {
const body = new URLSearchParams();
body.set('username', username);
body.set('password', password);
const options = {
headers: new HttpHeaders()
.set('Accept', 'application/json')
.set('Content-Type', 'application/x-www-form-urlencoded'),
withCredentials: true
};
return this.http.post<any>(environment.apiUrl + '/api/core/login',
body.toString(), options)
.pipe(map(response => {
// login successful if there's a jwt token in the response
const token = response.headers.get('Lemon-Authorization');
if (response.status === 200 && token) {
// store user details and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('authHeader', 'Bearer ' + token);
this.currentUserSubject.next(response.body.user);
}
return response.body.user;
}));
}
more info here -
How to force Angular2 to POST using x-www-form-urlencoded
here is working code :
login(username: string, password: string) {
const body = new URLSearchParams();
body.set('username', username);
body.set('password', password);
const options = {
headers: new HttpHeaders()
.set('Accept', 'application/json')
.set('Content-Type', 'application/x-www-form-urlencoded'),
withCredentials: true
};
return this.http.post<any>(environment.apiUrl + '/api/core/login',
body.toString(), options)
.pipe(map(response => {
// login successful if there's a jwt token in the response
const token = response.headers.get('Lemon-Authorization');
if (response.status === 200 && token) {
// store user details and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('authHeader', 'Bearer ' + token);
this.currentUserSubject.next(response.body.user);
}
return response.body.user;
}));
}
more info here -
How to force Angular2 to POST using x-www-form-urlencoded
answered Nov 22 '18 at 6:40
Nagasagar DsNagasagar Ds
184
184
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53422050%2fangular-login-withcredentialstrue-doesnt-work%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown