adonis js and angular 6 csrf
I am creating an SPA using Angular 6 for front end and Adonisjs for backend.
And now I got stuck in the problem csrf. If I disable csrf in adonis/config/shield.js I have complete my task. But, I don't want to disable csrf.
I have followed some suggestions on internet about using Angular HttpInterceptor but still not work.
here is csrf config in shield.js
csrf:
enable: true,
methods: ['POST', 'PUT', 'DELETE'],
filterUris: ['/api/auth/signin'],
cookieOptions:
httpOnly: false,
sameSite: true,
path: '/',
maxAge: 7200
// compareHostAndOrigin: true
And here is my token-interceptor.service.ts
import Injectable from '@angular/core';
import
HttpClientXsrfModule,
HttpInterceptor,
HttpXsrfTokenExtractor,
HttpRequest,
HttpHandler,
HttpEvent
from '@angular/common/http';
import Observable from 'rxjs';
@Injectable()
export class TokenInterceptorService implements HttpInterceptor
constructor(private tokenExtractor: HttpXsrfTokenExtractor)
intercept(
req: HttpRequest<any>,
next: HttpHandler
): Observable<HttpEvent<any>>
const headerName = 'XSRF-TOKEN';
const respHeaderName = 'X-XSRF-TOKEN';
const token = this.tokenExtractor.getToken() as string;
if (token !== null && !req.headers.has(headerName))
req = req.clone( headers: req.headers.set(respHeaderName, token) );
return next.handle(req);
And I don't know if the Angular intercept the Http. because from my request, I don't see any X-XSRF-TOKEN header.
And I still confuse about the token Adonisjs uses. because when I log in and console.log(request.csrfToken)
I got a value but the value is different from token in database (I use mongoDB).
Should I got csrf from the beginning I open my app?
or something else?
Please suggest me how to fix it.
angular csrf adonis.js csrf-token
add a comment |
I am creating an SPA using Angular 6 for front end and Adonisjs for backend.
And now I got stuck in the problem csrf. If I disable csrf in adonis/config/shield.js I have complete my task. But, I don't want to disable csrf.
I have followed some suggestions on internet about using Angular HttpInterceptor but still not work.
here is csrf config in shield.js
csrf:
enable: true,
methods: ['POST', 'PUT', 'DELETE'],
filterUris: ['/api/auth/signin'],
cookieOptions:
httpOnly: false,
sameSite: true,
path: '/',
maxAge: 7200
// compareHostAndOrigin: true
And here is my token-interceptor.service.ts
import Injectable from '@angular/core';
import
HttpClientXsrfModule,
HttpInterceptor,
HttpXsrfTokenExtractor,
HttpRequest,
HttpHandler,
HttpEvent
from '@angular/common/http';
import Observable from 'rxjs';
@Injectable()
export class TokenInterceptorService implements HttpInterceptor
constructor(private tokenExtractor: HttpXsrfTokenExtractor)
intercept(
req: HttpRequest<any>,
next: HttpHandler
): Observable<HttpEvent<any>>
const headerName = 'XSRF-TOKEN';
const respHeaderName = 'X-XSRF-TOKEN';
const token = this.tokenExtractor.getToken() as string;
if (token !== null && !req.headers.has(headerName))
req = req.clone( headers: req.headers.set(respHeaderName, token) );
return next.handle(req);
And I don't know if the Angular intercept the Http. because from my request, I don't see any X-XSRF-TOKEN header.
And I still confuse about the token Adonisjs uses. because when I log in and console.log(request.csrfToken)
I got a value but the value is different from token in database (I use mongoDB).
Should I got csrf from the beginning I open my app?
or something else?
Please suggest me how to fix it.
angular csrf adonis.js csrf-token
You don't need the csrf in your angular client application, you need to enable a jwt or api security middleware
– Pepe
Nov 15 '18 at 18:02
add a comment |
I am creating an SPA using Angular 6 for front end and Adonisjs for backend.
And now I got stuck in the problem csrf. If I disable csrf in adonis/config/shield.js I have complete my task. But, I don't want to disable csrf.
I have followed some suggestions on internet about using Angular HttpInterceptor but still not work.
here is csrf config in shield.js
csrf:
enable: true,
methods: ['POST', 'PUT', 'DELETE'],
filterUris: ['/api/auth/signin'],
cookieOptions:
httpOnly: false,
sameSite: true,
path: '/',
maxAge: 7200
// compareHostAndOrigin: true
And here is my token-interceptor.service.ts
import Injectable from '@angular/core';
import
HttpClientXsrfModule,
HttpInterceptor,
HttpXsrfTokenExtractor,
HttpRequest,
HttpHandler,
HttpEvent
from '@angular/common/http';
import Observable from 'rxjs';
@Injectable()
export class TokenInterceptorService implements HttpInterceptor
constructor(private tokenExtractor: HttpXsrfTokenExtractor)
intercept(
req: HttpRequest<any>,
next: HttpHandler
): Observable<HttpEvent<any>>
const headerName = 'XSRF-TOKEN';
const respHeaderName = 'X-XSRF-TOKEN';
const token = this.tokenExtractor.getToken() as string;
if (token !== null && !req.headers.has(headerName))
req = req.clone( headers: req.headers.set(respHeaderName, token) );
return next.handle(req);
And I don't know if the Angular intercept the Http. because from my request, I don't see any X-XSRF-TOKEN header.
And I still confuse about the token Adonisjs uses. because when I log in and console.log(request.csrfToken)
I got a value but the value is different from token in database (I use mongoDB).
Should I got csrf from the beginning I open my app?
or something else?
Please suggest me how to fix it.
angular csrf adonis.js csrf-token
I am creating an SPA using Angular 6 for front end and Adonisjs for backend.
And now I got stuck in the problem csrf. If I disable csrf in adonis/config/shield.js I have complete my task. But, I don't want to disable csrf.
I have followed some suggestions on internet about using Angular HttpInterceptor but still not work.
here is csrf config in shield.js
csrf:
enable: true,
methods: ['POST', 'PUT', 'DELETE'],
filterUris: ['/api/auth/signin'],
cookieOptions:
httpOnly: false,
sameSite: true,
path: '/',
maxAge: 7200
// compareHostAndOrigin: true
And here is my token-interceptor.service.ts
import Injectable from '@angular/core';
import
HttpClientXsrfModule,
HttpInterceptor,
HttpXsrfTokenExtractor,
HttpRequest,
HttpHandler,
HttpEvent
from '@angular/common/http';
import Observable from 'rxjs';
@Injectable()
export class TokenInterceptorService implements HttpInterceptor
constructor(private tokenExtractor: HttpXsrfTokenExtractor)
intercept(
req: HttpRequest<any>,
next: HttpHandler
): Observable<HttpEvent<any>>
const headerName = 'XSRF-TOKEN';
const respHeaderName = 'X-XSRF-TOKEN';
const token = this.tokenExtractor.getToken() as string;
if (token !== null && !req.headers.has(headerName))
req = req.clone( headers: req.headers.set(respHeaderName, token) );
return next.handle(req);
And I don't know if the Angular intercept the Http. because from my request, I don't see any X-XSRF-TOKEN header.
And I still confuse about the token Adonisjs uses. because when I log in and console.log(request.csrfToken)
I got a value but the value is different from token in database (I use mongoDB).
Should I got csrf from the beginning I open my app?
or something else?
Please suggest me how to fix it.
angular csrf adonis.js csrf-token
angular csrf adonis.js csrf-token
asked Nov 12 '18 at 6:59
Sulaiman TriarjoSulaiman Triarjo
598
598
You don't need the csrf in your angular client application, you need to enable a jwt or api security middleware
– Pepe
Nov 15 '18 at 18:02
add a comment |
You don't need the csrf in your angular client application, you need to enable a jwt or api security middleware
– Pepe
Nov 15 '18 at 18:02
You don't need the csrf in your angular client application, you need to enable a jwt or api security middleware
– Pepe
Nov 15 '18 at 18:02
You don't need the csrf in your angular client application, you need to enable a jwt or api security middleware
– Pepe
Nov 15 '18 at 18:02
add a comment |
0
active
oldest
votes
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%2f53257231%2fadonis-js-and-angular-6-csrf%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
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%2f53257231%2fadonis-js-and-angular-6-csrf%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
You don't need the csrf in your angular client application, you need to enable a jwt or api security middleware
– Pepe
Nov 15 '18 at 18:02