Ik heb twee services:
- https://api.local - Laravel backend
- https://app.local - VueJS frontend + Capacitor Android app
Ik wil een login doen vanuit de frontend/app naar https://api.local/v1/login, deze doet het volgende:
De cookie wordt niet gezet doordat cross-site cookie protectie deze (terecht) blokkeert, die vrijwel tegenwoordig in elke browser actief is. Als ik deze protectie uitzet, dan werkt het wel gewoon.
De reden om het via de API te doen, is dat je dan de flag httpOnly kan aanzetten en de frontend de cookie niet hoeft/kan uit lezen. Ik gebruik momenteel localStorage, dat werkt prima, maar wordt sterk afgeraden wegens XSS.
Ik kan het niet echt als SPA draaien (dus met proxy naar de API), aangezien ik het ook wil aanbieden als PWA en dus ook op de mobiel.
Zie ik iets over het hoofd? Ik heb van alles geprobeerd, CORS settings lijken te kloppen, maar ik heb geen enkel idee wat nu te doen.
Thanks!
- https://api.local - Laravel backend
- https://app.local - VueJS frontend + Capacitor Android app
Ik wil een login doen vanuit de frontend/app naar https://api.local/v1/login, deze doet het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| public function __invoke($request) { $token = $request->user()->createToken($request->device_name)->plainTextToken; // als test $cookie = cookie( name: 'test', value: 'foo', minutes: 45000, sameSite: 'None', secure: true, httpOnly: true, ); return response() ->json(compact('token')) ->withCookie($cookie); } |
De cookie wordt niet gezet doordat cross-site cookie protectie deze (terecht) blokkeert, die vrijwel tegenwoordig in elke browser actief is. Als ik deze protectie uitzet, dan werkt het wel gewoon.
De reden om het via de API te doen, is dat je dan de flag httpOnly kan aanzetten en de frontend de cookie niet hoeft/kan uit lezen. Ik gebruik momenteel localStorage, dat werkt prima, maar wordt sterk afgeraden wegens XSS.
Ik kan het niet echt als SPA draaien (dus met proxy naar de API), aangezien ik het ook wil aanbieden als PWA en dus ook op de mobiel.
Zie ik iets over het hoofd? Ik heb van alles geprobeerd, CORS settings lijken te kloppen, maar ik heb geen enkel idee wat nu te doen.
Thanks!