栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何将jquery / ajax数据用于password.js

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何将jquery / ajax数据用于password.js

我尝试了您的代码,并且在Passport方面有效。我先进行了“本地注册”,“注销”,然后进行了“本地登录”,并成功通过了身份验证,但是在用户界面中没有任何指示。

这与您正在讨论的302有关-服务器回答302因为您已定义

successRedirect :'/profile'
,然后jQuery遵循了重定向并接收到HTML,该HTML无法解析,因为它需要JSON。而且由于您没有
.fail()
$.ajax
呼叫中定义回调,所以看不到它。

会话正常,但可以手动转到

/profile

当您使用常规HTML表单登录时,浏览器将发送一个HTTP请求并根据响应进行操作(例如,呈现HTML页面,或者如果是302,则执行重定向)。发生相同的情况,但调用时上下文不同

$.ajax
-AJAX调用遵循重定向,因为它发出了请求,但浏览器没有。

您应该为AJAX和HTML登录使用单独的路由,或者使用自定义回调并根据确定返回的内容

req.accepts()

分开的路线可以是例如。

// AJAX logins to this URL, redirect on client side using// window.location.href if login succeedsapp.post('/login/ajax', passport.authenticate('local-login'));// HTTP login form send to this URLapp.post('/login', passport.authenticate('local-login', {  successRedirect : '/profile',  failureRedirect : '/login',  failureFlash : true}));

自定义回调可能是这样的(未经测试):

app.post('/login', function(req, res, next) {  passport.authenticate('local-login', function(err, user, info) {    switch (req.accepts('html', 'json')) {      case 'html':        if (err) { return next(err); }        if (!user) { return res.redirect('/login'); }        req.logIn(user, function(err) {          if (err) { return next(err); }          return res.redirect('/profile');        });        break;      case 'json':        if (err)  { return next(err); }        if (!user) { return res.status(401).send({"ok": false}); }        req.logIn(user, function(err) {          if (err) { return res.status(401).send({"ok": false}); }          return res.send({"ok": true});        });        break;      default:        res.status(406).send();    }  })(req, res, next);    });


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/484728.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号