首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角色(BrowserId)身份验证在Express3.0中永远不会成功(使用passport-browserid)

角色(BrowserId)身份验证在Express3.0中永远不会成功(使用passport-browserid)
EN

Stack Overflow用户
提问于 2012-10-09 16:55:15
回答 2查看 957关注 0票数 3

我尝试使用this tutorialpassport documentation编写一个使用skeleton app进行身份验证的passport,但登录总是失败-我不确定我做错了什么,因为我没有看到来自passport的任何日志。这是我的front-end code,这是我的server code,我确实看到了角色弹出窗口,但当我从该弹出窗口登录时,req.isAuthenticated()始终为false。

以下是客户端代码的一个片段:

代码语言:javascript
复制
<script type="text/coffeescript">
    $ ->
      $('#signin').click -> navigator.id.request()
      $('#signout').click -> navigator.id.logout()

      navigator.id.watch
        onlogin: (assertion) ->
          $.ajax
            type: 'POST'
            url: '/login'
            data: assertion: assertion

            success: (res, status, xhr) ->
              console.log res

            error: (res, status, xhr) -> alert "login failure" + res

        onlogout: ->
          console.log 'logout'

  </script>

这是服务器代码:

代码语言:javascript
复制
express = require 'express'
passport = require 'passport'
BrowserIDStrategy = require('passport-browserid').Strategy
app = express()

passport.serializeUser (user, done) ->
  log 'serializing user #{user}'
  done null, user.email

passport.deserializeUser (email, done) ->
  log 'deserializing email #{email}'
  done null, email: email

persona_audience = "http://#{config.server.host}:#{config.server.port}"

passport.use new BrowserIDStrategy audience: persona_audience,
  (email, done) ->
    log email
    done null, email: email

app.get '/test', (req, res) ->
  msg = if req.isAuthenticated() then "Congratulations! You've signed in as #{req.user.email}" else "Fail :(("
  log msg
  res.send msg

app.post '/login', passport.authenticate('browserid', {failureRedirect: '/test', successRedirect: '/test'})

app.get '/logout', (req, res) ->
  req.logOut()
  res.redirect '/'

app.configure ->
#  app.use express.logger()
  app.use express.cookieParser(config.server.session_secret)
  app.use express.session()
  app.use express.bodyParser()
  app.use express.methodOverride()
  app.use passport.initialize()
  app.use passport.session()
  app.use app.router
  app.use express['static'](__dirname + '/public')
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-12 10:26:14

app.configure放在app.login之前可以修复它。有人能解释一下发生了什么事吗?

票数 2
EN

Stack Overflow用户

发布于 2012-10-10 05:06:17

代码语言:javascript
复制
    data: assertion: assertion

这不是上面的有效json:

代码语言:javascript
复制
        data: { assertion: assertion }
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12796277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档