Articles of 护照

如何将护照与路由控制器结合起来?

我目前正试图执行passport-ldap和passport-jwt到我的rest API。 对于路由,我使用pleerock /路由控制器 ,它有一个授权的方式,但它与布尔和护照工作,我真的不知道。 我甚至不确定是否有可能将两者结合起来。 目前AuthorizationChecker返回false,因为我不知道如何使passport.authenticate成为一个布尔值。 useExpressServer(app, { controllers: [UserController, IssueController, LoginController], authorizationChecker: async (action: Action) => { return false; } @Authorized() @Get("/test") test(@Res() response: Response){ response.send("Test done.") } 如何使用passport.authenticate()与路由控制授权?

ReferenceError:用户没有定义

这是一个非常具体的问题,但我真的不知道是什么导致了错误。 我有以下代码: router.get('/user/profile', passport.authenticate('jwt', { session: false }), function(req, res, next){ // Something }); 当我访问路由时,它通过我的passport-jwt代码,包括我自定义的getUserById()函数,这是在用户模型中定义的 let opts = {}; opts.jwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme('jwt'); opts.secretOrKey = config.secret; passport.use(new JwtStrategy(opts, function(jwt_payload, done){ Users.getUserById(jwt_payload._id, function(err, user){ if(err){ return done(err, false); } if(user){ return done(null, user); } else { return done(null, false); } }); })); getUserById() module.exports.getUserById = function(id, callback){ […]

使用Next.JS,Express和Passport进行用户身份validation的简单示例

我真的不明白,为什么它是如此复杂的build立身份validation,并坚持与Node.js会话。 我遇到了会话持久性的问题, 在这里描述。 也许,我不明白… 因此,在SPA中,当浏览器使用POST方法从UI中fetch时,Passport在数据库中validation并保存会话(就像我设置的那样)。 下一步是什么? 如何告诉React前端(浏览器,服务器…),它应该应用新创build的cookie,并将其用于所有后续请求HMR,GraphQL和其他东西? 我有什么是所有后续请求服务器引用旧的cookie(没有创build一个成功的身份validation),正确的将永远不会查找… 一些解释将不胜感激。 谢谢。 PS:仍然在寻找最新的Next.js,Express和Passport进行身份validation的简单工作示例。 我在一个星期内遇到了这个问题

passport-facebook Strategy.parseErrorResponse

我正在尝试设置Facebook身份validation,并且每次调用callback函数时都会收到一个错误,它会在/node_modules/passport-facebook/lib/strategy.js:196:12处引发一个Strategy.parseErrorResponse 没有消息告诉我什么是错的。 我检查,以确保我的clientID和秘密是正确的(正如我看到这可能发生,如果他们是错的)。 passport.use(new FacebookStrategy({ clientID: myId, clientSecret: mySeceret, callbackURL: callBackUrl, passReqToCallback : true }, (req, accessToken, refreshToken, profile, done) => { process.nextTick(() => { if (req.user) { done(null, req.user); if (!req.user.facebookId) { req.user.facebookId = profile.id; req.user.save().then(() => { done(null, req.user); }); } else { done(null, req.user); } } else { User.find({where: {facebookId: profile.id}}, function […]

Passport.js – 将数据发回到react / redux应用程序,同时在login后redirect

我正在创build一个React / Redux应用程序,并且是使用Node / Express和Passport身份validation设置后端的新手。 我想要发生的是用户login,凭据被检查,如果用户从数据库中find,redirect用户到下一页,并返回用户的信息,所以我可以更新减速机。 我的端点login工作,因为我能够访问req.user对象,并获得成功身份validation后正确的用户信息。 我被卡住的地方是将用户redirect到另一个页面,同时也传递该用户的信息,所以我可能会更新REDX存储。 编辑:所以我通过发送authentication后的用户信息更新响应以及下一个redirect用户的路线。 由于我使用的是redux,我执行login操作,一旦得到响应,我redirect用户window.location。 这部分解决了我的问题,即使我login后redirect,我相信,更新window.location后,我的redux商店得到刷新,我失去了我抓住服务器端的任何信息。 app.post('/api/login', passport.authenticate('local-login', { failureRedirect: '/login'}), (req, res) => { res.json({ redirect: '/profile userInfo: req.user.dataValues}) }) }) export const login = (email, password) => { return(dispatch) => { axios .post('/api/login', { email: email, password: password }) .then(resp => { dispatch({ type: 'LOGIN_USER', data: resp.data }) […]

未知的身份validation策略“本地”(错误护照)

继续得到这个错误popup。 检查并重新检查了我的代码。 这是我的passport.ts import * as express from 'express'; import * as passport from 'passport'; import * as session from 'express-session'; let MySQLStore = require('express-mysql-session')(session); import { Strategy as LocalStrategy } from 'passport-local'; import * as userProc from '../procedures/users.proc'; import { pool } from './db'; export default function configurePassport(app: express.Express) { passport.use(new LocalStrategy({ usernameField: 'email', […]

如何在没有会话的Facebook Passport之后redirect到之前的URL

我试图redirect回到引用标题中的链接,但在Facebookcallback请求不包含引用标题。 app.get( // referer present '/login/facebook', passport.authenticate('facebook', { scope: ['email'], session: false }), ); app.get( // referer not present '/login/facebook/return', passport.authenticate('facebook', { failureRedirect: config.CLIENT_URI, session: false }), (req, res) => { const { secret, expiresIn } = config.jwt; const id = Array.isArray(req.user) ? req.user[0].id : req.user.id; // Redirect to client const token = jwt.sign({ id […]

在NodeJS中的函数之间传递variables

我正在关注这个( YouTube链接 )节点教程,因为我必须为朋友构build一个Web应用程序。 他需要使用Dynamo DB和节点j,我正在学习,而我build立这个应用程序,我做得很好,但现在我卡住了。 我正在尝试获取JWT令牌(如video中提到的),但没有任何反应。 这是我的路线: router.post('/authenticate', (req, res, next) => { const username = req.body.username; const password = req.body.password; USER.getUserByUsername(username, (err, user) => { if (err) throw err; if (!user) { return res.json({ success: false, "msg": "User not found" }); } User.comparePassword(password, user.password, (err, isMatch) => { if (err) throw err; if (isMatch) […]

护照本地策略 – 不通过callback

我认为我制定了一个像以前一样的许多人的标准护照本地战略。 我已经parsing了表单,试过enctype = "multipart/urlencoded" ,大多数人提到的方式。 但是, passport.serializeUser仍然没有被触发。 现在,它可以redirect到主页,但是,在控制用户时,它是未定义的。 const env = require('dotenv').load(), config = require( __dirname + '/config.json' )[process.env.NODE_ENV], config_web = config.web, config_fb = config.fb, _WEB_PORT = config_web.port, _WEB_HOST = config_web.host, _FB_ID = config_fb.fid, _FB_SECRET = config_fb.secret; const express = require('express'), app = express(), compression = require('compression'), ejs = require('ejs'), cookieParser = require('cookie-parser'), fs = […]

使用Passport在Express中传递参数

我使用Express和Passport做了一个小型的login应用程序。 但似乎我不能指导用户进入一个特定的用户configuration文件。 用户需要填写一个HTML表单,他必须redirect到他自己的configuration文件页面(为了简单起见,可以说这个页面与其他用户页面只有标题不同)。 我有这在我的用户路线。 (即routes / users.js) router.get('/userprofile', authenticationMiddleware(), function (req, res, next) { res.render('userprofile'); }); router.post('/login', passport.authenticate('local-login', { successRedirect: '/users/userprofile', failureRedirect: '/users/login', failureFlash: true })); 在我的passport.jsconfiguration文件中,我有这个。 passport.use('local-login', new LocalStrategy({ usernameField: 'username', passwordField: 'password', passReqToCallback: true }, function (req, username, password, done) { db.pool.getConnection(function (err, connection) { if(err) throw err; var query = connection.query('SELECT * […]