Tag: 基本authentication

基于令牌的身份validation和在Nodejs中的Facebook身份validation

我正在使用MEAN堆栈。 前端和后端是独立的项目。 我的后端nodejs REST API使用基于令牌的身份validation(用户使用用户名和密码凭据login,然后服务器将生成一个JWT进一步请求。)我也有一个中间件来validation令牌。 现在我需要允许用户使用Facebooklogin,我改变基于令牌的身份validation之前使用passport-facebook策略。 这是基于会话的authentication。 那么当用户通过Facebook成功login时,如何生成令牌? 使用带有令牌的Facebook身份validation在npm中是否有任何特定的包? 谢谢。

为什么我会连接错误尝试连接到mongo

做一个练习,我必须build立一个应用程序,允许注册用户和编辑它们。 我按照书的指示,但是我仍然卡住,因为我得到一个错误: 未处理的拒绝MongoError:在indexInformation(/ home / mihaly / meanbook / node_modules / index.html)上的Collection.listIndexes(/home/mihaly/meanbook/node_modules/mongoose/node_modules/mongodb/lib/collection.js:1732:11) mongoose / node_modules / mongodb / lib / db.js:1607:25)在Db.indexInformation(/home/mihaly/meanbook/node_modules/mongoose/node_modules/mongodb/lib/db.js:1571:44)在ensureIndex(/ home / mihaly / meanbook / node_modules / mongoose / node_modules / mongodb / lib / db.js:1066:8)at Db.ensureIndex(/home/mihaly/meanbook/node_modules/mongoose/node_modules/mongodb/lib/db.js:在Collection.ensureIndex(/ home / mihaly / meanbook / node_modules / mongoose / node_modules / mongoose / node_modules / […]

使用Socket.io,Angular,JWTvalidation数据直到用户validation刷新后才可用

我正在使用Angular和Socket.io,socket-jwt用于身份validation套接字,以及angular-socket-io在前端。 当页面加载时,客户端尝试连接到socket.io服务器。 它被拒绝是因为它们没有为客户build立令牌。 当套接字连接build立时,我正在解码服务器上的令牌,然后我想向客户端发送数据,包括socket.id,我将更新模型和视图。 用户进行身份validation之后,直到页面刷新为止,socket.io数据才可用,然后发送到客户端。 如何在用户login并使数据可用后build立socket.io连接? 我曾尝试调用我的套接字工厂,用户login后使用login控制器内的socket.connect()和io.connect()。 sockets工厂 app.factory('socket', function ($window, socketFactory) { var token = $window.localStorage.yourTokenKey; var myIoSocket = 'http://localhost:8080'; var socket = io.connect(myIoSocket, {'query' : 'token=' + token}); return socket; }); login控制器loginfunction $scope.login = function() { AuthService.login($scope.user) .then(function(msg) { socket.connect(); $state.go('home'); }, function() { console.log('Login Failed'); }); }; 服务器代码 var socketIo = require('socket.io'); […]

Nodejs:用户信息/数据库和authentication(Passport)

我正在用Nodejs创build一个用户login系统。 我有几个问题,我似乎无法find答案(我正在使用本地策略使用护照)。 1)创build/存储用户帐户 护照文件指定了如下内容: User.findOne({username: username }, function(err, user){ if(err){return done(err);} if(!user){ return done(null, false, {message: "Incorrect Username."}); } if(!user.validPassword(password)){ return done(null, false, {message: 'Incorrect Password.'}); } return done(null, user); }); 要么 passport.deserializeUser(function(id, done){ User.findById(id, function(err,user){ done(err, user); }); }); 我不确定“用户”来自何处,因为我在尝试login时遇到“用户未定义”错误。 我假设我需要build立某种types的数据库,但我不知道该怎么做(文档和在线资源都不需要这样做)。 什么是“用户”? 我将如何去做一个“创build帐户”的事情,并将用户帐户存储到(本地)数据库? 2)之后获取用户信息/存储用户信息 用户login后,我需要获取与该帐户关联的特定数据,例如用户名。 用户也将有一个“排名点”,所以我需要一种方式来获得这一点。 当用户在我拥有的游戏中“胜出”时,用户获得“排名积分”,我也需要将其更新到特定的帐户。 我将如何做到这一点? 这是否也使用Passport完成(或Passport仅用于身份validation?)

我如何使用户只能在Keystone.js中编辑自己的数据?

在Keystone.js中,所有pipe理员用户都可以查看和更改其他用户的任何数据,但是我想要一些层次结构,所以有一个root用户组可以更改任何用户(密码除外)和简单的pipe理员组可以看到仪表板,但不能更改有关其他pipe理员或root用户的信息。 这怎么可能? 我必须在keystone模块中编辑一些路由,对吗? 有什么最好的做法呢?

我如何鉴别续集?

我有一个路由,我必须通过在请求体中search任何现有用户名和密码的实例来validation是否可以继续并validation用户身份。 我不确定如何执行此操作(在Sequelize中search和检查实例),因为文档对于Sequelize来说是相当新的。 我试图通过阅读这里http://docs.sequelizejs.com/en/latest/api/model/例如User.findOne db.User.findOne({ where: { password: req.password, username: req.username } }).then(function(address) { if(address.User !== null) { console.log('User name: '+address.User.name); } else { console.log('User name: NO USER'); } 但不确定的确切的语法/方法。 我有这样的东西: app.post('/authenticate', function (req, res) { //TODO validate req.body.username and req.body.password //if is invalid, return 401 if (!(req.body.username === 'john.doe' && req.body.password === 'foobar')) { res.status(401).send('Wrong […]

使用passport-local进行身份validation后,无法使用来自客户端的会话

我正在尝试使用express,passport-local,mongoose编写一个小型的用户authentication模块。 用户身份validation工作正常,但我不能够在进一步的会话中使用经过身份validation的用户。 已经经历了Stackoverflow和其他地方的大部分build议,但似乎没有在这里工作。 我的代码的微缩版本如下: var express = require('express'); var cookieParser = require('cookie-parser'); var mongoose = require('mongoose'); var bodyParser = require('body-parser'); var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; var session = require('express-session'); function genuuid(req) { return "UUID"; } var app=express(''); mongoose.connect('mongodb://localhost:27017/test'); //user config var userSchema = new mongoose.Schema({ username: String, password: String}); var User = […]

卫星然后authentication后不叫

我对angular度很陌生,所以我的知识是基于教程,即使如此,我也不成功。 我需要使用Google帐户进行身份validation。 这工作,我得到一个令牌,我的API调用可以授权。 但login后popup窗口应该解雇,我应该被redirect到主页。 这不起作用。 这是我的控制器 angular.module('MyApp').controller('loginController', ['$scope', '$auth', '$location','loginService', loginController]); function loginController($scope, $auth, $location, loginService) { $scope.authenticate = function(provider) { $auth.authenticate(provider).then(function(data) { loginService.saveToken(data.data.token); console.log('You have successfully signed in with ' + provider + '!'); $location.path('http://localhost/#/home'); }); }; }; 在app.js我有我的configuration。 这不是我的工作,而是一个实习生和我一样的朋友,他负责一个移动应用程序,在这个应用程序中,他使用相同的function来获得他的令牌,并且工作正常。 authProvider.google({ clientId: CLIENT_ID, redirectUri: 'http://localhost:3000/api/users/signIn' }); $authProvider.storage = 'localStorage'; // or 'sessionStorage' $authProvider.loginRedirect = […]

产品生态系统中的身份validation和授权

我有一个由多个产品组成的产品生态系统,例如:angular度应用程序,网站和混合应用程序,所有这些应用程序都由节点后端供电。 所以,现在我想为整个生态系统添加一个单一的authentication和授权,也需要模块化和可扩展性。 另外,我正在遵循三层架构,即: [APPLICATION] – > [API] – > [DB] ,只有可访问数据库的API层。 现在我也希望身份validation和授权是另一个应用程序在生态系统,可以插入到其他应用程序和使用没有太多的设置。 另外,由于它是(身份validation和授权模块)另一个应用程序,我不希望它直接访问数据库,我希望它做API调用,再加上它不应该使用像auth0第三方authenticationscheme。 重要的是除了身份validation和授权模块之外的应用程序都不应该有任何身份validation相关的逻辑。 基本上这应该是模块比插入时允许身份validation和授权和无缝集成。 这个设置是可能的吗? 如果是这样,我该怎么办呢? 如果不是authentication和授权在其他生产级生态系统中是如何实现的? 提前致谢!

我无法使用passport-facebook来validation路线

下午好。 我前几天尝试使用express和passport-facebookvalidation路线,但没有成功。 而在客户端,我正在使用VueJs。 如果有人能帮我解决这个问题,我会很开心的。 我将在下面发布我的代码: express.js 'use strict'; let express = require('express'); let bodyParser = require('body-parser'); let cors = require('cors'); let cookieParser = require('cookie-parser'); let session = require('express-session'); let passport = require('passport'); let load = require('express-load'); module.exports = () => { let app = express(); //configurar a porta em que o express irá rodar app.set('port', […]