phonegap ajax 用户身份验证与 nodejs-express-mongodb-passport js

Posted

技术标签:

【中文标题】phonegap ajax 用户身份验证与 nodejs-express-mongodb-passport js【英文标题】:phonegap ajax user authentication with nodejs-expresss-mongo-passportjs 【发布时间】:2014-05-01 12:09:45 【问题描述】:

我已经基于node.js、express.js、passport-local搭建了一个基本的node.js用户认证系统。

我将我的用户名和密码存储在 mysql 数据库中,并使用 mongo 来持久存储会话。我现在想将用户注册和登录移动到 phonegap。

从我在网上找到的教程看来,唯一可行的方法是 AJAX 用户身份验证。但是我有两个问题:

    由于 passport.js 依赖重定向,我如何重写快速路由以响应 JSON?

    // 处理注册表单
    app.post('/register', passport.authenticate('local-signup', 
            成功重定向:'/home',
            failureRedirect : '/注册',
            failureFlash : true // 允许 flash 消息
        ));
    
    
    // process the login form
    app.post('/login', passport.authenticate('local', 
        successRedirect : '/home', 
        failureRedirect : '/login', 
        failureFlash : true // allow flash messages
    ));
    

    在我的策略中,我有: passport.use('local-signup', new LocalStrategy( 用户名字段:'电子邮件', 密码字段:'密码', passReqToCallback : 真 , 功能(请求,电子邮件,密码,完成) ... 查询数据库的其余代码

    也用于登录 //配置passport本地登录策略 护照.使用(新的本地策略( 功能(用户名,密码,完成) var query = 'select * from users where email = '+ connection.escape(username); connection.query(查询,功能(错误,用户) if (err) return done(err); ...其余代码

    PhoneGap 中的 AJAX 身份验证是否会通过向 /login 发送帖子并因此在快速服务器中创建新的活动会话来工作?

    如何处理客户端中的状态。在普通的 web 应用程序中,您使用重定向 ie。登录尝试、注销等失败。在 AJAX 身份验证中,您如何处理?您是否返回状态码、返回新标记、更新部分视图?

【问题讨论】:

【参考方案1】:

我将在进行一些研究时结束这个问题,而我最初的问题是我对 phonegap 应用程序的架构缺乏了解。我不知道我需要遵循单页应用架构与传统网页模型。

【讨论】:

你最后做了什么? 我最终使用 REST api 来获取用户详细信息,然后在本地存储中存储一个标志来检查用户是否登录。我按照这里的例子:raymondcamden.com/index.cfm/2011/11/10/…

以上是关于phonegap ajax 用户身份验证与 nodejs-express-mongodb-passport js的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap iOS ajax 请求永远不会完成

Phonegap 和 Django 身份验证

phonegap:基于 cookie 的身份验证 (PHP) 不起作用 [webview]

使用带有摘要身份验证、jquery ajax 调用的 RestFul PHP Web 服务

Phonegap错误:401未经授权 - 在Phonegap中使用基本身份验证的Rest API

在与 JSF 和 Apache Shiro 的 Ajax 交互中处理身份验证