Token löschen für vollständigen Logout
This commit is contained in:
@@ -102,6 +102,10 @@ def login():
|
|||||||
print("[Fehler bei /api/login]:", e)
|
print("[Fehler bei /api/login]:", e)
|
||||||
return jsonify({"message": "Serverfehler"}), 500
|
return jsonify({"message": "Serverfehler"}), 500
|
||||||
|
|
||||||
|
@app.route('/api/logout', methods=['POST'])
|
||||||
|
def logout():
|
||||||
|
# Aktuell macht das nichts, aber der Client bekommt Bestätigung
|
||||||
|
return jsonify({"message": "Logout erfolgreich"})
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|||||||
@@ -1,16 +1,20 @@
|
|||||||
import { useNavigate } from 'react-router-dom';
|
import { useNavigate } from 'react-router-dom';
|
||||||
|
import axios from '../services/api';
|
||||||
|
|
||||||
function LogoutButton() {
|
function LogoutButton() {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
const logout = () => {
|
const logout = async () => {
|
||||||
localStorage.clear();
|
try {
|
||||||
navigate('/login');
|
await axios.post('/logout'); // sendet POST an /api/logout
|
||||||
|
} catch (err) {
|
||||||
|
console.warn('Logout-Request fehlgeschlagen, ignoriere...');
|
||||||
|
}
|
||||||
|
localStorage.clear(); // entfernt token + role
|
||||||
|
window.location.href = '/login'; // harter Redirect
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return <button onClick={logout}>Logout</button>;
|
||||||
<button onClick={logout}>Logout</button>
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default LogoutButton;
|
export default LogoutButton;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
|
|
||||||
const instance = axios.create({
|
const instance = axios.create({
|
||||||
baseURL: import.meta.env.VITE_API_URL || 'http://127.0.0.1:5000/api',
|
baseURL: import.meta.env.VITE_API_URL,
|
||||||
});
|
});
|
||||||
|
|
||||||
instance.interceptors.request.use(config => {
|
instance.interceptors.request.use(config => {
|
||||||
|
|||||||
Reference in New Issue
Block a user