我的登出机制的代码是
app.get('/logout', isLoggedIn, function(req, res) {
req.logout();
res.redirect('/');
});
Run Code Online (Sandbox Code Playgroud)
使用密钥的Express会话包,没有在任何地方设置Cookies.
当我在注销后单击浏览器后退按钮时,它仍允许用户返回正在进行身份验证的页面.如何完全终止此会话?
isLoggedIn只是通过PassportJS的isAuthenticated方法进行身份验证.这是什么方式?
请帮忙.提前致谢.
编辑:这是会话ID

我正在使用Express/Node.js和Passport.js(本地护照)和Mongoose构建应用程序.
有两种用户:
/user-login页面和护照策略登录'local-user-login';常规用户存储在"用户"MongoDB集合中)/admin-login页面和护照策略登录'local-admin-login';管理员存储在"Admins"MongoDB集合中)我还有2个页面:(只/user_home需要记录的普通用户可以访问)和/admin_home(仅限登录的管理员)
路线/user_home:
app.get('/user_home', isLoggedIn, function(req, res) {
// render the page
});
function isLoggedIn(req, res, next) {
if (req.isAuthenticated())
return next();
res.redirect('/login');
}
Run Code Online (Sandbox Code Playgroud)
如果我以管理员身份登录并尝试访问/user_home,则不允许我这样做,这很好.我的问题是:如何定义另一个" isLoggedIn"函数来检查我是以管理员而不是普通用户身份登录的?理想情况下,我希望有一个函数"isLoggedInAsUser",另一个函数是"isLoggedInAsAdmin".
到目前为止,我尝试/admin_home 以相同的方式定义路线:
app.get('/admin_home', isLoggedIn, function(req, res) {
// render the page
});
Run Code Online (Sandbox Code Playgroud)
但很明显为什么它不起作用.代码不知道我希望它检查它是否是管理员而不是普通用户.
我无法在facebook和google的护照中找到所有可能的范围选项.任何人都可以提到我们在Facebook和谷歌认证期间可以传递的所有可能的范围选项/值吗?
我需要使用facebook和google的其他范围选项,就像我目前使用'email'范围值一样.请分别提及facebook和google的所有可能的范围选项.
passport.authenticate(key, {scope: ['email']})(req, res, next);
Run Code Online (Sandbox Code Playgroud) node.js passport-facebook passport-local passport.js passport-google-oauth2
我正在尝试使用带有本地护照策略的passportjs 在node.js 应用程序中实现身份验证。我仔细阅读了文档并使用了文档中建议的所有内容。但我每次都收到“缺少凭据”的消息。
Node.js 文件:
var http = require('http');
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var passport = require('passport');
var localStrategy = require('passport-local').Strategy;
var app = express();
app.set('port', process.env.PORT || 3000);
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(express.static(path.join(__dirname, 'public')));
app.use(cookieParser());
app.use(require('body-parser').urlencoded({
extended: true
}));
app.use(require('express-session')({
secret: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用passport、mongodb、mongoose、express 和passport-local-mongoose 插件对小型webapp 进行身份验证。我bad request在尝试登录用户时被退回。我能够注册用户并将数据导入数据库。
我如何继续使用错误处理进行调试?护照和护照本地猫鼬的文档似乎很简单(我有点菜鸟)。
应用程序.js
app.use(passport.initialize())
app.use(passport.session())
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', routes);
var User = require('./models/user.js')
passport.use(new LocalStrategy(User.authenticate()));
//passport.use(new LocalStrategy(UserSchema.authenticate()))
// use static serialize and deserialize of model for passport session support
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
// Connect to Mongoose
mongoose.connect('mongodb://localhost/users')
Run Code Online (Sandbox Code Playgroud)
注册路由(获取数据到数据库,但重定向失败)
// Register a user to the DB
router.post('/register', function(req, res, next){
let firstName = req.body.firstName
let lastName = req.body.lastName
let username = req.body.email
//let password = req.body.password
let homeAirport = req.body.homeAirport
User.register(new User ({
firstName: firstName,
lastName: …Run Code Online (Sandbox Code Playgroud) 当我尝试运行我的代码时,它给出了参考错误:未定义LocalStrategy.
这是我第一次使用node.js而且我用这个打了一堵墙.我提前感谢你的帮助.
我将所有代码放在一个代码段中,以便您轻松完成.我已经尝试了其他帖子进行修复,但都没有成功.
/***********
Modules
***********/
//Load the express library
var express = require('express');
//Create a new variable called “app”; we pass on the express() method.
var app = express();
//Set Port
var port = 7878;
var mongoose = require('mongoose'); //Place this on top; Loads mongoose library
var bodyParser = require('body-parser');
var passport = require('passport');
var LocalStratgy = require('passport-local').Strategy;
/*Body parser*///whenever you do a post request from the form, it gets the data through a URL encoded format.
app.use(bodyParser.urlencoded({
extended: …Run Code Online (Sandbox Code Playgroud)我正在创建一个具有用户身份验证的自持续聊天应用程序项目。以下代码能够成功注册(添加新用户)。但是,以前注册的用户不会登录。示例:输入用户名 foo 和密码 foopass 后,终端内会发生以下情况
Executing (default): CREATE TABLE IF NOT EXISTS `users` (`id` INTEGER auto_increment , `email` VARCHAR(255) NOT NULL DEFAULT 'abhinav@gmail.com' UNIQUE, `username` VARCHAR(255) NOT NULL UNIQUE, `password` VARCHAR(255) NOT NULL, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;
Executing (default): SHOW INDEX FROM `users`
Database is ready
Executing (default): SELECT `id`, `email`, `username`, `password`, `createdAt`, `updatedAt` FROM `users` AS `users` WHERE `users`.`username` = 'foo' LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
以下是我的js文件
1.服务器端.js
const express = require('express')
const …Run Code Online (Sandbox Code Playgroud) Hi awesome developers,
I'm trying to implement Authentication using passport-local and Nestjs with reference to https://progressivecoder.com/how-to-implement-nestjs-passport-authentication-using-local-strategy/.
I have implemented exactly same but Nestjs always returns 401 Unauthorized even with valid user. I can't seem to find what I am missing.
Code Structure
Authentication Module
User Module
Here's the code:
Authentication Module:
authentication.module.ts
import { Module } from '@nestjs/common';
import { PassportModule } from '@nestjs/passport';
import { UserModule } from 'src/user/user.module';
import { AuthenticationController } from './controllers/authentication.controller';
import { AuthenticationService …Run Code Online (Sandbox Code Playgroud) passport.js ×8
node.js ×7
express ×3
javascript ×3
mongoose ×2
mongodb ×1
nestjs ×1
sequelize.js ×1