简介:
node.js提供了创建服务器端应用程序的理想环境,并有可能采用不同的身份验证策略。您可以使用的功能强大工具之一是Auth0,这是一种灵活的,可插入的解决方案,可在您的应用程序中添加身份验证和授权服务。该博客将使用Node.js。
探索Auth0的高级使用情况。先决条件:
- node.js and express.js的基本知识
- 熟悉auth0
- 一个Auth0帐户
创建node.js应用程序:
为您的应用程序创建一个新目录,并使用package.json文件初始化它。这可以通过运行以下命令来完成:
mkdir myAuthApp && cd myAuthApp
npm init -y
设置auth0:
注册或登录到您的Auth0帐户。创建一个新的“常规Web应用程序”,并记下您的“域”,“客户端ID”和“客户端秘密”。这些值将在以后使用。
node.js中实现auth0:
通过运行:npm install express dotenv passport passport-auth0 express-session
。
创建一个.env文件并添加以下行,用Auth0的凭证代替占位符。
AUTH0_CLIENT_ID=YOUR_CLIENT_ID
AUTH0_DOMAIN=YOUR_DOMAIN
AUTH0_CLIENT_SECRET=YOUR_CLIENT_SECRET
AUTH0_CALLBACK_URL=http://localhost:3000/callback
SESSION_SECRET=YOUR_RANDOM_VALUE
配置护照:
护照是Node.js的身份验证中间件。 Passport-auth0策略用于AUTH0实施。使用类似的auth0策略设置护照:
const passport = require('passport');
const Auth0Strategy = require('passport-auth0');
let 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 || 'http://localhost:3000/callback'
},
function(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);
});
保护路线:
为了保护路线,您可以使用“连接 - 确保login”软件包中的“ ensureLoggedIn”中间件。它将将未经身份的用户重定向到登录页面。
const ensureLoggedIn = require('connect-ensure-login').ensureLoggedIn();
app.get('/user', ensureLoggedIn, (req, res) => {
res.send(req.user);
});
结论:
auth0提供了强大的,高度可自定义的身份验证和授权服务。与node.js应用程序集成在一起很容易,并且在管理用户身份验证方面可以将很多工作脱离您的肩膀。上面的指南使您瞥见了Auth0的高级应用。始终记住要确保您的敏感数据安全,并且永远不会在客户端或公共存储库中揭露您的秘密。