标签: passport-local

如何在graphql中使用passport-local

我正在尝试在我的项目中实现 GraphQL,我想passport.authenticate('local')在我的登录中使用Mutation

我想要的代码改编:

const typeDefs = gql`
type Mutation {
      login(userInfo: UserInfo!): User
    }
`

 const resolvers = {
    Mutation: {
      login: (parent, args) => { 
        passport.authenticate('local')
        return req.user
    }
}
Run Code Online (Sandbox Code Playgroud)

问题:

  1. passport设计多为REST / Express吗?
  2. 我可以操作passport.authenticate方法(将用户名和密码传递给它)吗?
  3. 这甚至是一种常见做法还是我应该坚持使用一些 JWT 库?

passport-local passport.js graphql apollo-server

8
推荐指数
2
解决办法
3564
查看次数

如何在node.js中的护照认证后发送json作为响应

我正在尝试这个git示例.

当我将它与我的项目集成时效果很好,但我想要实现的是发送json作为对客户端/请求的响应,而不是successRedirect:'/ profile'和failureRedirect:'/ signup'.

是否可以发送json,还是有其他方法来获得相同的?

任何帮助将不胜感激,TU

node.js express passport-facebook passport-local

7
推荐指数
2
解决办法
7457
查看次数

passport.initialize()中间件未用于快递4.10的自定义回调

任何人都可以帮我这个.Error: passport.initialize() middleware not in use当我尝试连接到数据库中的用户时,我不断得到.异常案例工作得很好(没有找到错误的密码/用户名).

这是设置:

我正在使用的版本

// version
node --version v0.10.33
express@4.10.2
passport@0.2.1
passport-local@1.0.0
Run Code Online (Sandbox Code Playgroud)

server.js代码在这里

// server.js
'use strict';
var express = require('express');
var bodyParser = require('body-parser');
var session = require('express-session');
var passport = require('passport');
var flash = require('connect-flash');
var cookieParser = require('cookie-parser');

//Our custom modules
var mysqlc = require('./modules/mysql_client');

// Our custom apps
var app = express();

//view engine setup
app.set('env', process.env.NODE_ENV);
console.log('Running as environment: ' + app.get('env'));
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(favicon(path.join(__dirname,'./public/favicon.ico'))); …
Run Code Online (Sandbox Code Playgroud)

node.js express passport-local passport.js

7
推荐指数
1
解决办法
1万
查看次数

在客户端获取令牌以进行护照本地身份验证

编辑我试过两个,重定向,而不是重定向.重定向时,我得到的结果与我直接请求的结果相同/,但是当我不接收时,我得到的是一个包含的对象data = Moved Temporarily. Redirecting to /

鉴于此策略:

var strategy = new LocalStrategy(
{
  session: true
},
function (username, password, done) {
  User.findOne({ username: username }, function(err, user) {
    if (err) { return done(err); }
    if (!user) {
      return done(null, false, { message: 'Incorrect username.' });
    }
    if (user.password !== password) {
      return done(null, false, { message: 'Incorrect password.' });
    }
    return done(null, user);
  });
});
Run Code Online (Sandbox Code Playgroud)

而这台服务器:

//************ EDIT ****//
function genuuid(req) {
  return "Test UID"; …
Run Code Online (Sandbox Code Playgroud)

node.js passport-local passport.js

7
推荐指数
1
解决办法
3819
查看次数

如何使用护照和快递显示自定义错误消息

我在注册用户时检查电子邮件是否已存在.如果用户已存在,则传递错误消息"email already exists".但在前端它显示"未授权"错误401.我想传递错误消息,我从后端传递到前端,但它传递默认消息.下面是我如何检查用户是否已经存在并发送错误消息,

exports.register = new LocalStrategy({
    usernameField: 'email',
    passReqToCallback: true
}, function(req, email, password, done,res) {
    var newUser = new User({
        email: email,
        password: password,
        name: req.body.fname
    });
    var searchUser = {
        email: email
    };
    User.findOne(searchUser, function(err, user) {
        if (err) return done(err);
        console.log("err "+err);

        if (user) {
            return done(null, false, {
                message: "email already exists"
            });
        }
        newUser.save(function(err) {
        console.log("newUser "+newUser);
            done(null, newUser);
        })
    });
});
Run Code Online (Sandbox Code Playgroud)

我使用护照进行身份验证,

authRouter.post('/signup', passport.authenticate('local-register'),function(req, res) {
    createSendToken(req.user, res);
});
Run Code Online (Sandbox Code Playgroud)

错误消息不是我传递给前端的消息.它显示未经授权的错误,这是默认错误.当我在前端的控制台中打印错误消息时,它显示,

Object {data: "Unauthorized", …
Run Code Online (Sandbox Code Playgroud)

node.js express passport-local passport.js

7
推荐指数
1
解决办法
3823
查看次数

passport.authenticate successRedirect条件

在我的app.js中,我有:

router.post('/login', passport.authenticate('local', {
  successRedirect: '/admin/users',
  failureRedirect: '/login'
}), function (req, res) {
});
Run Code Online (Sandbox Code Playgroud)

我的用户对象如下所示:

{ _id: 586afad4a4ff884d28b6ca97,
  firstName: 'Joseph',
  ...
  isAdmin: false }
Run Code Online (Sandbox Code Playgroud)

我想做的是:

router.post('/login', passport.authenticate('local', {
  successRedirect: {
    if(req.body.user.isAdmin === true) {
      res.redirect('/admin/users')
    }
    res.redirect('/dashboard');
  },
  failureRedirect: '/login'
}), function (req, res) {
});
Run Code Online (Sandbox Code Playgroud)

但似乎我不能.使用passport.authenticate检查用户是管理员还是登录帖子的最简单示例是什么

express passport-local passport.js

7
推荐指数
1
解决办法
5082
查看次数

如何获得passport.authenticate本地策略使用async/await模式

我一直未能获得passport.authenticate在async/await或promise模式下工作.这是一个我认为应该工作的例子,但它无法执行passport.authenticate().

const passport = require("passport");

let user;

try {
    user = await __promisifiedPassportAuthentication();

    console.log("You'll never have this ", user);
} catch (err) {
    throw err;
}

function __promisifiedPassportAuthentication() {
    return new Promise((resolve, reject) => {

        console.log("I run");

        passport.authenticate('local', (err, user, info) => {

            console.log("I never run");

            if (err) reject(err);
            if (user) resolve(user);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

任何智慧的圣言都会受到高度赞赏.

node.js async-await passport-local passport.js

7
推荐指数
1
解决办法
4255
查看次数

如何在passport-twitter策略中使用会话变量req.user

因为我可以req.user通过传入来获取任何路由中的登录用户:

passport.authenticate("jwt", { session: false })
Run Code Online (Sandbox Code Playgroud)

我想允许用户使用除本地登录之外的Twitter登录,因此我在node.js API中有一个passport-twitter策略.如何使用req.user访问本地登录用户?

module.exports = passport => {
  passport.use(
    new Strategy({
        consumerKey: "",
        consumerSecret: "",
        callbackURL: "http://localhost:3000"
      },
      function(token, tokenSecret, profile, cb) {
        Profile.findOne({
          user: req.user._id
        }).then(
          userdetail => {
            userdetail.twuser = profile._json.screen_name;
            userdetail.token = token;
            userdetail.tokenSecret = tokenSecret;

            userdetail.save().then();
            return cb(null, profile);
          }
        )
      }
    )
  );
};
Run Code Online (Sandbox Code Playgroud)

javascript api node.js passport-twitter passport-local

7
推荐指数
1
解决办法
249
查看次数

使用电子邮件进行身份验证时,NestJS 护照身份验证返回 401

我遇到的问题似乎并不罕见,但我找到的解决方案在我的项目中不起作用。

我想做的是使用护照进行简单的身份验证,如本教程所示: https: //docs.nestjs.com/techniques/authentication

我一直遵循这个教程,一开始它很有效。后来我决定使用用户的电子邮件和密码而不是用户名作为身份验证。因此,我将身份验证过程中的变量名称和参数更改为电子邮件,这就是一切崩溃的点。我在这里错过了什么吗?

auth.module.ts

import {Module} from '@nestjs/common';
import {UsersModule} from "../users/users.module";
import {AuthService} from "./services/auth.service";
import {PassportModule} from "@nestjs/passport";
import {LocalStrategy} from "./strategies/local.strategy";
import {AuthController} from "./controllers/auth.controller";
import {JwtModule} from "@nestjs/jwt";
import {jwtConstants} from "./constants";
import {JwtStrategy} from "./strategies/jwt.strategy";
import {EncryptionModule} from "../encryption/encryption.module";

@Module({
    imports: [
        UsersModule,
        EncryptionModule,
        PassportModule.register({defaultStrategy: 'jwt'}),
        JwtModule.register({
            secret: jwtConstants.secret,
            signOptions: {
                expiresIn: '30s'
            }
        })
    ],
    providers: [
        AuthService,
        LocalStrategy,
        JwtStrategy
    ],
    controllers: [
        AuthController
    ]
})
export class AuthModule {
}
Run Code Online (Sandbox Code Playgroud)

控制器/auth.controller.ts …

authentication passport-local passport.js nestjs

7
推荐指数
2
解决办法
6255
查看次数

使用passportjs进行Nuxt身份验证?

如何使用JWT(后端快递)将nuxt auth模块(前端)与本地护照一起使用?

定义 jwt 策略以验证 jwt 令牌(express)

    var JwtStrategy = require('passport-jwt').Strategy,
        ExtractJwt = require('passport-jwt').ExtractJwt;
    var opts = {}
    opts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();
    opts.secretOrKey = 'secret';
    opts.issuer = 'accounts.examplesoft.com';
    opts.audience = 'yoursite.net';
    passport.use(new JwtStrategy(opts, function(jwt_payload, done) {
        User.findOne({id: jwt_payload.sub}, function(err, user) {
            if (err) {
                return done(err, false);
            }
            if (user) {
                return done(null, user);
            } else {
                return done(null, false);
                // or you could create a new account
            }
        });
    }));
Run Code Online (Sandbox Code Playgroud)

定义用于验证用户名和密码的本地策略(快速)

    passport.use(new LocalStrategy(
      function(username, password, done) …
Run Code Online (Sandbox Code Playgroud)

passport-local passport.js nuxt.js passport-jwt

6
推荐指数
1
解决办法
3106
查看次数