我正在尝试将Auth0集成到使用spark-java框架的web应用程序中。 问题是,虽然身份验证完美,包括回调(我看到在Auth0的网站上创建的新用户,我的网站被重定向),但我无法访问登录的用户信息。我已经尝试了SessionUtils.getAuth0User(request.raw())
之类的几种方法,但都没有工作。 例如在所提供的教程在这里:https://github.com/auth0-samples/auth0-servlet-sample/tree/master/01-Login 他们访问登录的用户信息,像这样:登录user null Auth0/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);
}
我试着做星火类似的事情,但由于得到星火作品有点不同我这样做:
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());
的代码始终报告作为用户即使创建并存储在数据库中的用户和登入没有运行或控制台错误工作正常空。我尝试过的其他方法替换了我设置用户变量的行,并写下了以下内容。
替代方法1:
Auth0User user = (Auth0User) request.session().attribute("auth0User");
这里auth0User是相同的字符串文字Auth0在其实施SessionUtils的使用如图此处引用它们的源代码:https://github.com/auth0/auth0-java-mvc-common/blob/master/src/main/java/com/auth0/SessionUtils.java
替代方法2:
Auth0User user = (Auth0User) request.raw().getUserPrincipal();
另外这是我的javascript代码,运行客户端认证:
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();
}
我不知道为什么用户每次都会被评估为空,而且我会喜欢关于我在做什么错误的一些反馈。谢谢。
嗨,咕,请您在布鲁克的请求/响应细节显示(截图)? – Andrew