PEASANT KING
Commander
- Registriert
- Okt. 2008
- Beiträge
- 2.412
Guten Morgen,
ich stehe mal wieder auf dem Schlauch. Ich bin dabei meine Web Anwendung von rein Laravel Frontend und Backend auf Vue Frontend und Laravel Backend um zu programmieren soweit so gut.
Mittels Axios stelle ich Requests an meine Laravel API das funktioniert auch wunderbar. Beim Login speichere ich mittels Vuex den JWT Token z.B. und möchte auch die Daten des eingeloggten Users speichern.
Hier mal ein Code Ausschnitt aus meiner index.js für Vuex:
Das Einloggen funktioniert auch wunderbar, leider ist aber mein User Objekt leer. Ich sitze auf dem Schlauch, da ich wenn ich das Objekt in der Console ausgebe, ein Objekt mit meinen Daten habe....
Der Code für die API sieht so aus:
Im Browser sieht das Ganze so aus:
Wie man sieht habe ich im ersten Bild meine User Daten.
EDIT:
Ich habe das ganze mal temporär so gelöst, das ich mir eine weitere Mutation angelegt habe, die das User Objekt setzt, dann funktioniert es.
Vielleicht kann einer der Experten mir sagen, ob das gangbar ist, oder nicht die beste Art.
ich stehe mal wieder auf dem Schlauch. Ich bin dabei meine Web Anwendung von rein Laravel Frontend und Backend auf Vue Frontend und Laravel Backend um zu programmieren soweit so gut.
Mittels Axios stelle ich Requests an meine Laravel API das funktioniert auch wunderbar. Beim Login speichere ich mittels Vuex den JWT Token z.B. und möchte auch die Daten des eingeloggten Users speichern.
Hier mal ein Code Ausschnitt aus meiner index.js für Vuex:
Javascript:
state: {
isHidden: "",
status: "",
token: localStorage.getItem("token") || "",
user: {}
},
mutations: {
auth_request(state) {
state.status = "loading";
},
auth_success(state, token, user) {
state.status = "success";
state.token = token;
state.user = user;
},
auth_error(state) {
state.status = "error";
},
logout(state) {
state.status = "";
state.token = "";
state.user = {};
}
},
actions: {
login({ commit }, user) {
return new Promise((resolve, reject) => {
commit("auth_request");
axios({
url: "http://airbaseapi.local/api/login",
data: user,
method: "POST"
})
.then(response => {
const token = response.data.success.token;
const user = JSON.parse(response.data.success.user);
localStorage.setItem("token", token);
axios.defaults.headers.common["Authorization"] = "Bearer " + token;
commit("auth_success", token, user);
resolve(response);
})
.catch(error => {
commit("auth_error");
localStorage.removeItem("token");
reject(error);
});
});
},
}
Das Einloggen funktioniert auch wunderbar, leider ist aber mein User Objekt leer. Ich sitze auf dem Schlauch, da ich wenn ich das Objekt in der Console ausgebe, ein Objekt mit meinen Daten habe....
Der Code für die API sieht so aus:
PHP:
**
* API login method
*
* @return json
*/
public function login()
{
if (Auth::attempt(['email' => request('email'), 'password' => request('password')])) {
$user = Auth::user();
$success['token'] = $user->createToken('AirbaseAPI')->accessToken;
$success['user'] = $user->toJson();
return response()->json(
[
'success' => $success,
$this->successStatus
]
);
} else {
return response()->json(['error' => 'Unauthorized'], 401);
}
}
Im Browser sieht das Ganze so aus:
Wie man sieht habe ich im ersten Bild meine User Daten.
EDIT:
Ich habe das ganze mal temporär so gelöst, das ich mir eine weitere Mutation angelegt habe, die das User Objekt setzt, dann funktioniert es.
Vielleicht kann einer der Experten mir sagen, ob das gangbar ist, oder nicht die beste Art.
Zuletzt bearbeitet: