【发布时间】:2020-02-06 00:51:48
【问题描述】:
我正在为我的网站设置身份验证。我希望将来有一些注册/连接帐户选项,但现在只关注抽搐身份验证。
我正在使用Next.js 进行服务器端渲染。
我已经从 http://www.passportjs.org/packages/passport-twitch/ 复制了代码,并将我的 client_id 和 secret 存储在 .env 文件中。
server.js->
const port = process.env.PORT || 3000;
const dev = process.env.NODE_ENV;
const nextApp = next({dev});
const express = require("express");
const bodyParser = require("body-parser");
const cookieParser = require("cookie-parser");
const cookieSession = require("cookie-session");
const passport = require("passport");
const twitchStrategy = require("passport-twitch").Strategy;
const app = express();
nextApp.prepare().then(() => {
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser());
app.use(cookieSession({secret:"somesecrettokenhere"}));
app.use(passport.initialize());
passport.use(new twitchStrategy({
clientID: process.env.TWITCH_CLIENT_ID,
clientSecret: process.env.TWITCH_CLIENT_SECRET,
callbackURL: "http://localhost:3000/auth/twitch/callback",
scope: "user_read"
},
function(accessToken, refreshToken, profile, done) {
console.log("profile: "+profile);
}
));
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(user, done) {
done(null, user);
});
app.get("/", function (req, res) {
return nextApp.render(req, res, '/Index', req.query);
});
app.get("/auth/twitch", passport.authenticate("twitch", {forceVerify: true}));
app.get("/auth/twitch/callback",
passport.authenticate("twitch", { failureRedirect: "/" }),
function(req, res) {
// Successful authentication, redirect home.
res.redirect("/");
});
app.get('*', (req, res) => {
return nextApp.render(req, res, '/Index', req.query);
});
app.listen(port, () => {
//console.log(`listening on port ${port}`);
});
});
当我点击/auth/twitch 路由时,我确实需要进行身份验证,然后给出“获取用户配置文件失败”。我对身份验证完全陌生,非常感谢任何帮助。谢谢!
编辑:作为旁注,我计划使用 uid-safe 作为 cookie 密码。
【问题讨论】:
标签: node.js express authentication passport.js next.js