首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将auth0集成到web应用程序速成/节点js中

将auth0集成到web应用程序速成/节点js中
EN

Stack Overflow用户
提问于 2018-03-23 13:12:17
回答 1查看 712关注 0票数 1

我正在尝试将auth0添加到我的web应用程序中,我已经跟踪了他们的教程和网络上的其他教程,包括创建帐户/客户端和其他所有内容,但是我一直得到通常的白色页面加载屏幕,几分钟后我收到了这个错误:

ERR_EMPTY_RESPONSE

这些是我代码的一部分:

app.js

代码语言:javascript
运行
复制
...
var cookieParser = require('cookie-parser');
var session = require('express-session');
var passport = require('passport');
var Auth0Strategy = require('passport-auth0');
...
// Configure Passport to use Auth0
var strategy = new Auth0Strategy(
 {
  domain: process.env.AUTH0_DOMAIN,
  clientID: process.env.AUTH0_CLIENT_ID,
  clientSecret: process.env.AUTH0_CLIENT_SECRET,
  callbackURL: process.env.AUTH0_CALLBACK_URL
  },
  (accessToken, refreshToken, extraParams, profile, done) => {
  return done(null, profile);
  }
 );

passport.use(strategy);

passport.serializeUser(function(user, done) {
 done(null, user);
});

passport.deserializeUser(function(user, done) {
 done(null, user);
});
...
app.use(cookieParser());
app.use(
  session(
    {
     secret: uuid(),
     resave: false,
     saveUninitialized: false
    }
  )
);
app.use(passport.initialize());
app.use(passport.session());
...
app.get('/', routes.index);
app.get('/home', routes.home);
...
http.createServer(app).listen(app.get('port'), function(){
  console.log('Server listening on port: ' + app.get('port'));
});
module.exports = app;

index.js

代码语言:javascript
运行
复制
exports.home = function(req, res){
 res.render('home', { title: ' homepage ' });
};

exports.index = function(req, res){
 var express = require('express');
 var passport = require('passport');
 var router = express.Router();

var env = {
  AUTH0_CLIENT_ID: process.env.AUTH0_CLIENT_ID,
  AUTH0_DOMAIN: process.env.AUTH0_DOMAIN,
  AUTH0_CALLBACK_URL: process.env.AUTH0_CALLBACK_URL 
};

// GET home page. 
router.get('/', function(req, res, next) {
  res.render('home', { title: ' homepage ' });
});

// Perform the login
router.get(
  '/login',
  passport.authenticate('auth0', {
    clientID: env.AUTH0_CLIENT_ID,
    domain: env.AUTH0_DOMAIN,
    redirectUri: env.AUTH0_CALLBACK_URL,
    audience: 'https://' + env.AUTH0_DOMAIN + '/userinfo',
    responseType: 'code',
    scope: 'openid'
  }),
  function(req, res) {
    res.redirect('/');
  }
);

// Perform session logout and redirect to homepage
router.get('/logout', (req, res) => {
  req.logout();
  res.redirect('/');
});

// Perform the final stage of authentication and redirect to '/home'
router.get(
  '/callback',
  passport.authenticate('auth0', {
    failureRedirect: '/'
  }),
  function(req, res) {
    res.redirect(req.session.returnTo || '/home');
  }
);
}

有些地方我不清楚,或者我想确认一下: 1)回调网址必须是我的主页(180.180.180.180/home)或真正的首页(180.180.180.180)?哪一个应该包含在auth0仪表板中?

2)在路由器中,我是否也应该指定/登录和/注销字段,还是应该由auth0 API直接管理?

对不起,我的无知,但现在我有这个问题,我不明白这是一个授权错误与auth0帐户或其他什么。我在一个.env文件中有凭证,但是它们不应该是问题,因为我可以访问它们中的其他数据来连接到我的MySQL数据库。

EN

回答 1

Stack Overflow用户

发布于 2018-03-25 18:11:35

根据auth0 The callback URL is not necessarily the same URL to which you want users redirected after authentication.的文档

代码语言:javascript
运行
复制
redirect_uri field is used as a callback URL. Auth0 invokes callback URLs after the authentication process and are where your application gets routed.

在对用户进行身份验证并将相同的URL存储在web存储中之后,可以将用户重定向到非回调url。在app.get(/login)...>authenticated>>landing page>>stores上,访问令牌,所以在认证后,它应该登录到您的登陆页面(home)。

在app.get(/logout)上,您可以清除访问令牌或使其在所需的时间内可用,并让它在特定时间后过期。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49450482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档