我有一个基于快递的项目,需要基于护照的身份验证.
后台是一个angularjs应用程序作为静态文件.
我的身份验证代码完全基于https://github.com/jaredhanson/passport-local/blob/master/examples/express3-no-connect-flash/app.js
如果您未经过身份验证,则不要提供角度应用程序.我尝试在/ admin路由上添加ensureAuthenticated,但它使路由不起作用(404).一旦我删除了EnsureAuthenticated,就会提供/ admin.
app.use(express.static(path.join(__dirname, 'public')));
app.use('/admin', ensureAuthenticated, express.static(path.join(__dirname, 'admin')));
//serve routes
app.use(app.router);
Run Code Online (Sandbox Code Playgroud)
公用文件夹包含登录页面.
我怎么能实现这个目标?
我正在构建一个简单的网站,我想让用户使用Facebook登录,然后根据他们是否登录显示包含自定义项目的页面.即如果没有登录,它会显示一些信息,但如果登录,它会根据用户信息显示其他信息.
我正在使用passportjs Facebook模块,Express和Angular.我相信我已正确实施护照,但不知道1)我应该如何检查用户是否登录,以及2)使用Angular&Express根据用户状态显示视图的最佳实践.我在这里看了一个例子,但是不要认为这是我应该用Angular做的事情(https://github.com/jaredhanson/passport-facebook)
谢谢!
我想在批处理脚本中运行以下内容,它需要一个参数(路径)
runas /user:abc "icacls %1 /grant Everyone:(F) /T"
Run Code Online (Sandbox Code Playgroud)
但是参数%1已经包含了一个" (因为它是一个路径,由上下文菜单的Send To传递 - 我对此没有多少控制权).因此,当命令在批处理脚本中运行时,它会像这样运行:
runas /user:abc "icacls "c:\folder" /grant Everyone:(F) /T"
Run Code Online (Sandbox Code Playgroud)
所以显然我需要逃避由它"创建的s %1.如何执行字符串操作%1以使其转义引号?
使用Nodejs Passport,我正在测试使用以下代码发生错误情况时会发生什么:
passport.use(new LocalStrategy(
function(username, password, done) {
// asynchronous verification, for effect...
process.nextTick(function () {
findByUsername(username, function(err, user) {
console.log('in auth function');
return done('errortest');
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Unknown user ' + username });
}
if (user.password != password) {
return done(null, false, { message: 'Invalid password' });
}
return done(null, user);
})
});
}
));
app.get('/logintest', function(req, res, next) {
console.log('before authenticate');
passport.authenticate('local', function(err, user, info) {
console.log('authenticate …Run Code Online (Sandbox Code Playgroud) 我在nodejs上设置了护照,并让它与mongoose一起工作,允许用户登录并创建新帐户.
app.js:
var express = require('express')
, app = module.exports = express.createServer()
, passport = require('passport')
, LocalStrategy = require('passport-local').Strategy
, routes = require('./routes/index')(app) //index loads in multiple routes
, MongoDBConnection = require('./database/DatabaseConnector').MongoDBConnection;
// Configuration
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.cookieParser());
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.session({ secret: 'justdoit' }));
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
var mongoDbConnection = new MongoDBConnection();
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
mongoDbConnection.findUserById(id, function(err, user){
done(err, user);
});
});
passport.use(new LocalStrategy( …Run Code Online (Sandbox Code Playgroud) 免责声明:Git,我的意思是'我'搞砸了.
此前,我想git-gui给我看diff的这它认为是二进制文件.
所以我对我做了一些改动 .\.gitattributes
*.ini text
*.inc text
Run Code Online (Sandbox Code Playgroud)
但它没有用. 然后,我做了一些改变,以我的.\.git\info\attributes
*.ini text
*.inc text
*.inc crlf diff
*.ini crlf diff
Run Code Online (Sandbox Code Playgroud)
它起作用了.
但现在当我回到之前的承诺时,它会搞砸......
它应该是这样的:

它不会发生在所有文件中.编辑:它只发生在其中包含任何特殊字符的文件中.
问:这是提交本身的问题还是只是一些设置?
问:我能恢复吗?
我正在使用PassportJS和ExpressJS.
我需要更新登录的用户详细信息.虽然我在数据库中更新了这个,但是如何在会话中更新它,以便request.user包含更新的用户详细信息?
也就是说,在更新数据库之后,如何更新用户的会话信息?
我尝试直接分配更新的详细信息,request.user但它没有用.然后我尝试了request.session.passport.user- 这有效但是在request.user中更新之前还有大约5到10秒的延迟.
是否需要调用一个函数来更新存储在会话中的用户信息?或者是否有一些其他对象我可以更新,其中更改没有延迟
就在昨天在Heroku上我开始在twitter上登录快递时出现此错误
Error: failed to find request token in session
at Strategy.<anonymous> (/app/node_modules/passport-twitter/node_modules/passport-oauth/lib/passport-oauth/strategies/oauth.js:120:54)
at Strategy.authenticate (/app/node_modules/passport-twitter/lib/passport-twitter/strategy.js:82:40)
at Passport.authenticate (/app/node_modules/passport/lib/passport/middleware/authenticate.js:153:14)
at callbacks (/app/node_modules/express/lib/router/index.js:272:11)
at param (/app/node_modules/express/lib/router/index.js:246:11)
at pass (/app/node_modules/express/lib/router/index.js:253:5)
at Router._dispatch (/app/node_modules/express/lib/router/index.js:280:4)
at Object.handle (/app/node_modules/express/lib/router/index.js:45:10)
at Context.next (/app/node_modules/express/node_modules/connect/lib/http.js:204:15)
at Context.<anonymous> (/app/node_modules/passport/lib/passport/context/http/actions.js:64:8)
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
我正在使用护照来处理我的应用程序中的身份验证和会话.我正在使用mongostore坚持使用mongodb.
设置工作正常.但是,当我重新启动服务器时,所有用户都被注销,因此显然会话被保留在内存中而不是仅保留到mongodb.我正在尝试实现用户在重新启动服务器时仍然登录的设置.
基本配置如下
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(passport.initialize());
app.use(passport.session({
maxAge: new Date(Date.now() + 3600000),
store: new MongoStore(
{
db: mongodb.Db(
conf.mongodbName,
new mongodb.Server(
'localhost',
27017,
{
auto_reconnect: true,
native_parser: true
}
),
{
journal: true
}
)
},
function(error) {
if(error) {
return console.error('Failed connecting mongostore for storing session data. %s', error.stack);
}
return console.log('Connected mongostore for storing session data');
}
)
}));
Run Code Online (Sandbox Code Playgroud)
passport.use(new LocalStrategy(
{
usernameField: 'email',
passwordField: 'password'
},
function(email, password, done) {
console.log('user %s attempting …Run Code Online (Sandbox Code Playgroud) 我试图使用node.js的passport模块返回一个refreshToken.但是我使用下面的代码,我无法记录任何刷新令牌,但访问令牌工作正常.有没有办法为这个模块指定脱机访问类型,希望能够返回这个?
var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
passport.use(new GoogleStrategy({
clientID: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET,
callbackURL: "http://myurl/auth/callback"
},
function(accessToken, refreshToken, profile, done) {
console.log(refreshToken);
process.nextTick(function () {
return done(null, [{token:accessToken}, {rToken:refreshToken}, {profile:profile}]);
});
}
));
Run Code Online (Sandbox Code Playgroud)
这会将refreshToken返回为undefined.
任何帮助将不胜感激.
passport.js ×8
node.js ×7
express ×4
javascript ×2
angularjs ×1
batch-file ×1
git ×1
mongodb ×1
mongoose ×1
oauth-2.0 ×1
unicode ×1
windows ×1