Ich versuche, Aut0 in meine Webanwendung zu integrieren, die das Spark-Java-Framework verwendet. Das Problem ist, während die Authentifizierung perfekt funktioniert, einschließlich des Rückrufs (ich sehe den neuen Benutzer auf der Website von Auth0 erstellt und meine Website wird umgeleitet), kann ich nicht auf die angemeldeten Benutzerinformationen zugreifen. Ich habe verschiedene Methoden wie SessionUtils.getAuth0User(request.raw())
versucht und keiner von ihnen funktioniert. Zum Beispiel in der mitgelieferten Anleitung hier: https://github.com/auth0-samples/auth0-servlet-sample/tree/master/01-Login sie die Informationen in Benutzer wie so protokolliert Zugriff:Angemeldeter Benutzer null Aut0/Spark Java
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
final Auth0User user = SessionUtils.getAuth0User(req);
if (user != null) {
req.setAttribute("user", user);
}
req.getRequestDispatcher("/WEB-INF/jsp/home.jsp").forward(req, res);
}
Ich habe versucht, etwas Ähnliches mit Funken zu tun, aber da die get ein wenig anders in Funken funktioniert mache ich das :
port(Integer.valueOf(System.getenv("PORT")));
staticFileLocation("/spark/template/freemarker");
String clientId = System.getenv("AUTH0_CLIENT_ID");
String clientDomain = System.getenv("AUTH0_DOMAIN");
get("/", (request, response) ->
{
Map<String, Object> attributes = new HashMap<>();
Auth0User user = SessionUtils.getAuth0User(request.raw());
if(user != null) {
attributes.put("user", user);
attributes.put("loggedIn" , true);
}
else
attributes.put("loggedIn" , false);
attributes.put("clientId" , clientId);
attributes.put("clientDomain" , clientDomain);
return new ModelAndView(attributes, "index.ftl");
}, new FreeMarkerEngine());
der Code den Benutzer immer als null berichtet, obwohl der Benutzer erstellt und in der Datenbank und die signin funktioniert ohne Laufzeit oder Konsole Fehler gespeichert wird. Die anderen Methoden, die ich versuchte, ersetzte die Zeile, in der ich die Benutzervariable setzte und schrieb das folgende. 1
Alternative Methode:
Auth0User user = (Auth0User) request.session().attribute("auth0User");
Hier auth0User ist die gleiche Stringliteral Auth0 nutzt bei der Umsetzung von SessionUtils wie in ihren Quellcode verwiesen hier gezeigt: https://github.com/auth0/auth0-java-mvc-common/blob/master/src/main/java/com/auth0/SessionUtils.java
Alternative Methode 2:
Auth0User user = (Auth0User) request.raw().getUserPrincipal();
Darüber hinaus ist dies mein JavaScript-Code, auf dem die Client-Seite für die Authentifizierung ausgeführt wird:
var lock = new Auth0Lock('${clientId}', '${clientDomain}', {
auth: {
redirectUrl: 'http://localhost:5000/build',
responseType: 'code',
params: {
scope: 'openid user_id name nickname email picture'
}
}
});
$(document).ready(function()
{
$('.signup').click(function()
{
doSignup();
});
});
function doSignup() {
lock.show();
}
Ich habe keine Ahnung, warum Benutzer jedes Mal auf Null bewertet wird, und ich würde gerne ein Feedback darüber, was ich falsch mache. Vielen Dank.
Hallo, Coud zeigen Sie bitte (Screenshot) mit Ihrer Anfrage/Antwort Detail in brouser? – Andrew