passport.js 使用sails.js 验证弹出窗口

Posted

技术标签:

【中文标题】passport.js 使用sails.js 验证弹出窗口【英文标题】:passport.js authenticate popup window using sails.js 【发布时间】:2014-02-23 21:26:34 【问题描述】:

我需要在 passport.js 身份验证方面的帮助。 passort.js 身份验证工作正常。 但我不知道如何在弹出窗口中创建身份验证登录。 后端的所有认证过程功能。

请帮帮我。

   'linkedin': function(req, res) 


           passport.authenticate('linkedin', failureRedirect: '/login', scope: ['r_basicprofile', 'r_emailaddress'],
function(err, user) 
            req.logIn(user, function(err) 
        if (err) 
            // console.log(err);
            res.view('500');
            return;
        
        req.session.user = user;
        return res.redirect('/user');
    );
)(req, res);

, 'facebook': 函数(请求,资源) passport.authenticate('facebook', failureRedirect: '/login', 范围: ['email','publish_stream'],display:'popup' , 功能(错误,用户)

    req.logIn(user, function(err) 
        if (err) 
            throw err;
            res.view('500');
            return;
        
        req.session.user = user;
        if (p) 

            //write the post project function
        

        return res.redirect('/user');
    );
)(req, res);

,

这是我的登录页面

     <form  action ="/auth/linkedin" method = "POST" class="columns small-12 iconized" >
         <input type="hidden" value="test messge" name="title">    
           <button type="submit"  class="icon-linkedin">Linkedin</button>
      </form>

请帮助我如何调整窗口大小。

【问题讨论】:

【参考方案1】:

一个解决方案是 jquery.lightbox_me.js 在这里找到 http://www.freshdesignweb.com/demo/index.php?p=1379320109

只需按照以下步骤操作:

1)下载源码,将.js文件复制到assets/js,将.css文件复制到assets/style

2) 将您的 html 代码更改为

 <button id="loginBtn" class="btn btn-success btn-med">Login</button>

 <form  id="loginForm" action ="/auth/linkedin" method = "POST" class="columns small-12 iconized" display: none; >
     <input type="text" value="test messge" name="title">    
       <button type="submit"  class="icon-linkedin">Linkedin</button>
  </form>

  <script>
$('#loginBtn').click(function(e) 
    $('#loginForm').lightbox_me(
        centered: true, 
        onLoad: function()  
            $('#loginForm').find('input:first').focus()
        
    );
    e.preventDefault();
);
  </script>

3) 这应该可以解决问题。但是最终最好将 js 脚本放在 html/ejs 文件之外,这样事情会更整洁。

由于 Sails 带有 ejs-locals,我会将标签内的内容放在一个单独的文件中,并改为调用 。查看此页面以获取更多信息: Sails.js - How to inject a js file to a specific route?

【讨论】:

以上是关于passport.js 使用sails.js 验证弹出窗口的主要内容,如果未能解决你的问题,请参考以下文章

Sails.js + Passport.js 获取当前登录用户

使用 Passport.js 和 Sails.js 注册后如何重定向到特定位置?

使用 passport.js、sails.js API 和 ember.js 登录 Facebook

Passport.js 在 req.login 上失败

登录时如何“记住”用户-passport.js-phonegap

Sails.js 0.11 和护照:“缺少凭据”错误