javascript / expert
Snippet
Funktionale Middleware für sichere Server Actions
Higher-Order Functions können als Middleware für React Server Actions fungieren. Dieses Muster zentralisiert Sicherheitsaspekte wie Authentifizierung und Logging und stellt sicher, dass diese konsistent angewendet werden, ohne die Logik einzelner Actions zu überladen.
snippet.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
type Action<T> = (formData: FormData) => Promise<T>;function withAuth<T>(action: Action<T>): Action<T> {return async (formData: FormData) => {const session = await getSession();if (!session) throw new Error("Unauthorized");// Log action for security auditingconsole.log(`User ${session.userId} performing action`);return action(formData);};}// Usage in a component or server fileconst deletePost = withAuth(async (formData) => {'use server';await db.posts.delete(formData.get('id'));});
react
Erklärung
1
function withAuth<T>(action: Action<T>): Action<T>
Ein Wrapper, der eine Action entgegennimmt und eine neue Version mit injizierter Sicherheitslogik zurückgibt.
2
if (!session) throw new Error("Unauthorized");
Erzwingt die Autorisierung an der Funktionsgrenze, bevor die Kernlogik ausgeführt wird.
3
return action(formData);
Delegiert die Ausführung an die ursprüngliche Action, sobald alle Prüfungen bestanden sind.