首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用静态json数据的passport-local对用户进行身份验证

使用静态json数据的passport-local对用户进行身份验证
EN

Stack Overflow用户
提问于 2016-05-21 19:49:25
回答 1查看 1.3K关注 0票数 1

我需要在node.js中使用passport-local从json文件对用户进行身份验证。我尝试使用MongoDb作为用户数据存储,它工作得很好。但是现在我需要尝试使用Json文件作为用户详细信息存储,并且passportlocal需要从文件中获取数据来验证用户身份。

请帮帮忙。

EN

回答 1

Stack Overflow用户

发布于 2016-05-21 22:12:49

假设这是您的主应用程序

代码语言:javascript
复制
var db = require('./db.js');
var passport = require('passport');
var bodyParser = require('body-parser');
var LocalStrategy = require('passport-local').Strategy;
var express = require('express')();
express.use(bodyParser.urlencoded({ extended: false }));
passport.use(new LocalStrategy(function(username, password, done) 
{
    db.getUser(username, function (err, user) 
    {
        if (err) 
            return done(err,null);
        else
            return done(null, user);
    });
}));
// Serilize authenticated user into the request so they can access callback functions
passport.serializeUser(function(user, done) 
{
  done(null, user);
});
// deserilize authonticated user so the callback function can read thier data
passport.deserializeUser(function(user, done) 
{
    done(null, user);
});

express.post('/auth',passport.authenticate('local', {session:false,failureRedirect:"/accessdenied"}),function(req,res)
{
    res.send("authenticated");
});

express.get('/accessdenied',function(req,res)
{
    res.send("access denied");
});

express.listen(4321);

这是您的模块,位于从json文件获取用户的同一文件夹中

代码语言:javascript
复制
var fs = require('fs');

exports.getUser = function(user,cb)
{
    fs.readFile('users.json','utf8',function(err,data)
    {
        if(err)
            cb(err,null);
        else
        {
            try
            {
                var users = JSON.parse(data);
                if(users[user] != undefined)
                {
                    cb(null,users[user]);
                }
                else
                {
                    cb(null);
                }
            }
            catch(e)
            {
                cb(e,null)
            }
        }
    })
}

这是同一文件夹中users.json文件的结构

代码语言:javascript
复制
{
    "user@example.com":{"firstName":"abdullah","lastName":"Shahin","email":"user@example.com","password":"234","age":"28"},
    "user2@example.com":{"firstName":"Nick","lastName":"Persons","email":"user2@example.com","password":"234","age":"27"}
}

main参数用作主键,它必须是唯一的,才能根据该用户名获取用户信息,我假设它的电子邮件地址。

希望能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37362538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档