想了解Passport.js-错误:无法将用户序列化到会话中的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于无法序列化会话状态的相关问题,此外,我们还将为您介绍关于angularjs–角/节
想了解Passport.js - 错误:无法将用户序列化到会话中的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于无法序列化会话状态的相关问题,此外,我们还将为您介绍关于angularjs – 角/节点/ Express/Passport跨域问题 – 启用CORS Passport Facebook验证、asp.net-mvc-3 – 将nhibernate实体序列化为json错误:连接时无法序列化会话、Axios、Passport 和 Express JS,无法保存跨域会话、css – Sass –compass –watch错误:无法加载指南针的新知识。
本文目录一览:- Passport.js - 错误:无法将用户序列化到会话中(无法序列化会话状态)
- angularjs – 角/节点/ Express/Passport跨域问题 – 启用CORS Passport Facebook验证
- asp.net-mvc-3 – 将nhibernate实体序列化为json错误:连接时无法序列化会话
- Axios、Passport 和 Express JS,无法保存跨域会话
- css – Sass –compass –watch错误:无法加载指南针
Passport.js - 错误:无法将用户序列化到会话中(无法序列化会话状态)
我遇到了 Passport.js 模块和 Express.js 的问题。
这是我的代码,我只想在第一次尝试时使用硬编码登录。
我总是收到这样的信息:
我搜索了很多并在stackoverflow中找到了一些帖子,但我没有失败。
Error: failed to serialize user into session at pass (c:\Development\private\aortmann\bootstrap_blog\node_modules\passport\lib\passport\index.js:275:19)
我的代码看起来像这样。
''use strict'';var express = require(''express'');var path = require(''path'');var fs = require(''fs'');var passport = require(''passport'');var LocalStrategy = require(''passport-local'').Strategy;var nodemailer = require(''nodemailer'');var app = express();module.exports = function setupBlog(mailTransport, database){var config = JSON.parse(fs.readFileSync(''./blog.config''));app.set(''view options'', {layout: false});app.use(express.static(path.join(__dirname, ''../'', ''resources'', ''html'')));app.use(express.bodyParser());app.use(express.cookieParser());app.use(express.session({ secret: ''secret'' }));app.use(passport.initialize());app.use(passport.session());app.get(''/blog/:blogTitle'', function(req, res) { var blogTitle = req.params.blogTitle; if(blogTitle === ''newest''){ database.getLatestBlogPost(function(post) { res.send(post); }); } else { database.getBlogPostByTitle(blogTitle, function(blogPost) { res.send(blogPost); }); }});passport.use(new LocalStrategy(function(username, password, done) { // database.login(username, password, done); if (username === ''admin'' && password === ''admin'') { console.log(''in''); done(null, { username: username }); } else { done(null, false); }}));app.post(''/login'', passport.authenticate(''local'', { successRedirect: ''/accessed'', failureRedirect: ''/access''}));app.listen(8080);console.log(''Blog is running on port 8080'');}();
谢谢。
答案1
小编典典看起来你没有实现passport.serializeUser
and passport.deserializeUser
。尝试添加这个:
passport.serializeUser(function(user, done) { done(null, user);});passport.deserializeUser(function(user, done) { done(null, user);});
angularjs – 角/节点/ Express/Passport跨域问题 – 启用CORS Passport Facebook验证
Chrome上出现的错误是:
XMLHttpRequest cannot load https://www.facebook.com/dialog/oauth?response_type=code&redirect_uri=http%…%3A8080%2Fauth%2Ffacebook%2Fcallback&scope=email&client_id=598171076960591. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.
我使用的路线是这样简单的:
// ===================================== // FACEBOOK ROUTES ===================== // ===================================== // route for facebook authentication and login app.get('/auth/facebook',passport.authenticate('facebook',{ scope : 'email' })); // handle the callback after facebook has authenticated the user app.get('/auth/facebook/callback',{ successRedirect : '/home',failureRedirect : '/login' }));
这是在我的angularJS文件上调用路由(我也尝试使用Credentials设置:true):
$http.get('/auth/facebook') .success(function(response) { }).error(function(response){ });
我在StackOverflow和其他论坛上发现了十几种解决方案。
>我尝试在route.js文件上的路由之前添加:
app.all('*',function(req,res,next) { res.header('Access-Control-Allow-Origin','*'); res.header("Access-Control-Allow-Headers","Content-Type,X-CSRF-Token,X-Requested-With,Accept,Accept-Version,Content-Length,Content-MD5,Date,X-Api-Version,X-File-Name"); res.header('Access-Control-Allow-Methods','GET,POST,PUT,HEAD,DELETE,OPTIONS'); res.header('Access-Control-Allow-Credentials',true); if ('OPTIONS' == req.method) { res.send(200); } else { next(); } });
>我尝试在server.js文件中添加(请注意,我将标题更改为setHeader,但我已经尝试过)
app.use(function(req,next) { res.setHeader('Access-Control-Allow-Origin','*'); res.setHeader('Access-Control-Allow-Headers','Content-Type,X-Requested-With'); res.setHeader('Access-Control-Allow-Methods',OPTIONS'); res.setHeader('Access-Control-Allow-Credentials',true); if ('OPTIONS' == req.method) { res.send(200); } else { next(); } }); require('./app/routes.js')(app,passport);
>我尝试在我的app.js文件(angularJS配置)中添加:
$httpProvider.defaults.useXDomain = true; delete $httpProvider.defaults.headers.common['X-Requested-With']; $httpProvider.defaults.withCredentials = true;
无论如何,我不知道还有什么要做的。我在网上找到的一切都不行。
有机会与我使用AngularJS路由有关吗?我没有看到任何这样的事情的原因,但是我已经猜出来了。
我的情况非常类似于这个:
Angular/Node/Express/Passport – Issues when connecting to facebook(CORS)
提前致谢!
解决方案只是使用“_____”登录LINK的按钮或文本。文字< a href =“/ auth / facebook”>< / a>链接。而已。
当然,我也遇到了很多其他绊脚石和陷阱。我试图不使用默认的中间件进行passport.authenticate(‘facebook’),但试图将它包装在一个函数(req,res,next){…}中,认为会做某事,但不会。
asp.net-mvc-3 – 将nhibernate实体序列化为json错误:连接时无法序列化会话
解决方法
使用合同解析器从this answer修复这个问题:
string output = JsonConvert.SerializeObject(theObject,new JsonSerializerSettings() { ContractResolver = new NHibernateContractResolver() });
Axios、Passport 和 Express JS,无法保存跨域会话
如何解决Axios、Passport 和 Express JS,无法保存跨域会话?
我正在构建一个以 Vue 作为前端和 Express JS 作为后端的应用程序。我正在尝试使用 Passport JS 制作用户登录功能。目前,身份验证有效,但会话存储无效。
我已经花了 天 试图使这项工作发挥作用。目前,问题似乎来自跨域请求。 我的前端在端口 80,我的后端在端口 3000。
我所有的请求都是在“withCredentials”设置为 true 的情况下提出的,我读到这是传递会话的唯一方法。在后端,我使用 cors
模块来处理跨域请求。
app.use(cors({
origin: [''http://localhost:80'',''http://localhost'',''http://localhost:3000''],credentials: true,exposedHeaders: [''set-cookie'']
}));
当我实际尝试登录时,我只是收到错误 Credential is not supported if the CORS header ‘Access-Control-Allow-Origin’ is ‘*’
。如果我查看检查器选项卡中发送的请求,我会发现在我的 POST 请求之前,发送了一个 OPTION 请求,其中包含错误的标头。
我尝试以各种可能的方式设置它,但它永远不会奏效。在这一点上,我什至不知道出了什么问题。这是发送请求的前端代码和处理请求的后端代码。我做了很多修改,我什至不知道这是否正确。
发送请求的前端
const instance = axios.create({
baseURL: "http://localhost:3000/api",headers: {
"Content-type": "application/json","Access-Control-Allow-Origin": ''http://localhost:80'',"Access-Control-Allow-Credentials": "true"
},withCredentials: true
});
http.post("/login",this.input,{
headers: {
"Content-type": "application/json","Access-Control-Allow-Credentials": "true"
}
})
.then((response) => {
// Handle the result and catch errors
});
后台处理登录请求
app.options(path,(req,res) => {
res.setHeader("Access-Control-Allow-Origin","http://localhost:80");
res.setHeader("Access-Control-Allow-Credentials","true");
req.setHeader("Access-Control-Allow-Origin","http://localhost:80");
req.setHeader("Access-Control-Allow-Credentials","true");
});
app.post(path,res,next) => {
console.log(''Connection'');
passport.authenticate(''local'',{},(err,user,info) => {
console.log(user);
if (user) {
req.login();
} else {
res.send(err);
}
})(req,next);
});
如果有人能帮忙解决这个问题,将不胜感激
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
css – Sass –compass –watch错误:无法加载指南针
我能够运行以下sass命令sass –sourcemap –watch style.scss:style.css
但是,如果我附加–compass参数,如下面的sass –compass –sourcemap –watch style.scss:style.css
我在Windows cmd面板中收到以下错误:“错误:无法加载指南针”.
我已尝试在github问题页面https://github.com/chriseppstein/compass/issues/1108上使用一些显然适用于某些人的方法
我尝试过的方法是使用带有罗盘0.12.2的sass 3.3.0.alpha.177(每次我尝试执行罗盘宝石时都会产生错误,这与本期Why does “compass watch” say it cannot load sass/script/node (LoadError)?几乎相同)
目前我的设置如下:
> sass 3.3.0.alpha.177
>罗盘0.13.alpha.4
> Windows 7
有没有办法可以使用Sass和罗盘,同时生成css调试所需的源图?
解决方法
关于Passport.js - 错误:无法将用户序列化到会话中和无法序列化会话状态的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于angularjs – 角/节点/ Express/Passport跨域问题 – 启用CORS Passport Facebook验证、asp.net-mvc-3 – 将nhibernate实体序列化为json错误:连接时无法序列化会话、Axios、Passport 和 Express JS,无法保存跨域会话、css – Sass –compass –watch错误:无法加载指南针等相关内容,可以在本站寻找。
本文标签: