Ich habe Funktionen in meinem API-Code, von denen einige nur angeforderte Ergebnisse nur an diejenigen Anfragen zurückgeben sollten, die ein korrektes Token haben. Wenn die Anfrage nicht autorisiert ist, geben Sie eine generische 401-Antwort zurück.Wie können einige API-Funktionen nur für autorisierte Benutzer in Erlang verfügbar gemacht werden?
Ich habe eine Hilfsfunktion is_authorised()
erstellt, die wahr/falsch zurückgibt.
Nun, in einer Funktion, die ich nur autorisierten Benutzern zugänglich machen möchte, überprüfe ich das Ergebnis der is_authorised()
Funktion und gebe die entsprechende Antwort zurück. Hier
ein Beispiel:
get_players(SessionID, _Env, _Input) ->
case is_authorized(_Env) of
true ->
Response = [json_header(), players:select_all()];
false ->
Response = get_unauthorized_response()
end,
mod_esi:deliver(SessionID, Response).
Ich frage mich, ob es möglich ist, um diese Überprüfung eleganter aussehen zu lassen, wie Python Dekorateure in Flask verwendet.
@app.route('/user')
@required_roles('admin', 'user')
def user_page(self):
return "You've got permission to access this page."
Ich weiß, dass ich benutzerdefinierte Funktionen in Wachen nicht verwenden kann, also denke ich, dass es nicht möglich ist, es als Wache zu machen.
Bitte beraten.
Ich dachte auch über diesen Ansatz nach, scheint, dass ich verwenden werde, sieht gut aus, danke! –
@SergeiBasharov siehe auch meine Bearbeitung. Auf diese Weise können Sie wahrscheinlich das Verhalten dieses Python-Snippets emulieren. – Dogbert