3

到目前为止,我一直在使用客户端身份验证。我刚刚设置了服务器端everyauth,它工作得很好但是当页面加载时我怎么能做类似的事情FB.getLoginStatus(我在客户端做了什么)?

如果用户已经登录,我不想让他们再次完成该过程。

感谢您的解释!

4

3 回答 3

3

文档

everyauth 还为 ServerRequest 实例 req 提供了方便的方法。从可以访问 req 的任何范围内,您都可以获得以下便利的 getter 和方法:

req.loggedIn- 一个布尔 getter,告诉您请求是否来自登录用户

req.user- 与会话关联的用户文档

req.logout()- 清除您的身份验证数据的会话

在快速视图中:

如果你使用 express,everyauth 会附带一些有用的动态助手。要启用它们:

var express = require('express')
, everyauth = require('everyauth') 
, app = express.createServer();
everyauth.helpExpress(app); 

然后,在您的视图中,您将可以访问附加到助手everyauth 的以下助手方法:

everyauth.loggedIn
于 2012-01-27T07:11:44.083 回答
0

我会在 node.js 上做这样的事情:

var userlogin = function () {
       var req = this.request
          ,res = this.response
          ,login = req.body
          ,username = login.username
          ,password = login.password;

      if(username === 'tester' && password === '12345'){
         req.session.user_id = xxxxxx;
         res.redirect('/');
      }else{
        res.redirect('/login');
      }

    }
    var checkAuth = function(fn_auth, fn_unauth){
      var req = this.request
          ,res = this.response
          ,unauthCallback;

      if(req.session.user_id){
        fn_auth(); //execute fn_auth if user is logged in. callback can be set to redirect to root path '/'
      }else{
          fn_unauth(); //execute fn_unauth calback which bring user to login path '/login'
        } 
      }
    }

基本上只是在用户已经登录时重定向。希望有帮助吗?

于 2012-01-27T05:35:50.010 回答
0

如果您使用 Jade 模板,可以通过以下 .jade 文件中的代码检查用户的登录状态,例如 - home.jade

if (!everyauth.loggedIn) // <-----
    a(href="/your_url_here/") log in with facebook
else
    p Welcome <username>
于 2013-05-08T23:28:59.260 回答