auth0-js:UnauthorizedError:尽管已登录,但未找到授权令牌

时间:2018-10-30 15:57:19

标签: express vue.js authorization jwt auth0

我用Vue(包括Vue-Router),Node和Express创建了一个应用程序。 我正在尝试使用auth0-js通过SSO保护我的应用程序。 我创建了Auth0-Account,并遵循了this教程。 我的登录功能如下:

import auth0 from 'auth0-js'
var auth = new auth0.WebAuth({
  clientID: <my-client-id>,
  domain: '<my-auth0-domain>/'
})

export function ssoLogin () {
  auth.authorize({
    responseType: 'token id_token'
    redirectUri: http://localhost:8000/callback,
    audience: 'https://<my-auth0-domain>/userinfo',
    scope: 'full_access'
  })
}

虽然登录本身可以正常工作,但我似乎无法找出如何保护我的应用程序的秘密路径。

在上述教程之后,我使用了express-jwt和jwks-rsa,如下所示:

var jwt = require('express-jwt')
var jwks = require('jwks-rsa')
var authCheck = jwt({
  secret: jwks.expressJwtSecret({
    cache: true,
    rateLimit: true,
    jwksRequestsPerMinute: 5,
    jwksUri: "https://<my-auth0-domain>/.well-known/jwks.json"
  }),
  audience: <my-client-id>,
  issuer: "https://<my-auth0-domain>/",
  algorithms: ['RS256']
})

app.post('/send-sensitive-data', authCheck, function (req, res) {
  // this post requests sends some data, and should only do so, if a user is logged in
})

但是,即使我通过SSO登录,当我尝试访问敏感数据时,也会获得

UnauthorizedError: No authorization token was found

我不知道哪里出了问题。这似乎是一个非常愚蠢的问题,但是:有人可以告诉我授权令牌必须在哪里,以便可以找到它?

如果有人帮助我或者给我一个提示,我将非常感激。 如果可以,请随时询问更多代码段。

1 个答案:

答案 0 :(得分:0)

好的,我自己找到了答案...但是如果有人犯了与我正在做的相同的错误:我忘了在axios.post请求中设置标头,像这样:

axios({
  method: 'post',
  url: '/send-sensitive-data',
  data: somedata,
  headers: {
    Authorization: 'Bearer ' + getAccessToken()
  }
})
.then(response => {
  // do something with the response
})