错误401在浏览器和邮递员中未经授权可以

时间:2020-04-27 11:51:57

标签: javascript node.js reactjs jwt passport.js

早上好人

我正在设置测试前端,在我的应用程序中,我使用Passport,Token Jwt进行身份验证。在邮递员,一切都很好!我可以验证自己的身份。 现在在浏览器中,我登录它会生成令牌,但是当尝试执行受护照保护的路线时,它将返回未经授权的我 按照我的代码。我是一个初学者,关于stackoverflow的第一篇文章。

Routes.js

app.route('/rifas') 
   .all(app.config.passport.authenticate())
   .post(app.api.rifas.saverifa)

Passport.js

const authSecret = process.env.authSecret
const passport = require('passport')
const passportJwt =  require('passport-jwt')    
const { Strategy, ExtractJwt } = passportJwt 

module.exports = app => {


    const options = {
        jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
        secretOrKey: authSecret
    }
    const strategy = new Strategy(options,(payload, done) => {
        app.db('users')
        .where({id: payload.id})
        .first()
        .then( user => {
            if(user) {
                done(null, {id: user.id, email: user.email})
            }
            else {
                done(null,false)
            }
        })
        .catch(err => done(err,false))

    })
    passport.use(strategy)
    return {
        initialize: () => passport.initialize(),
        authenticate: () => passport.authenticate('jwt', {session: false})
    }

}

存档api.js

import axios from 'axios'

const api = axios.create({
    baseURL: 'localhost:3333',
})
export default api

前端存档

 async function handleLogin (e) {
    e.preventDefault()
    try {
     const {data: token} = await axios.post('http://localhost:3333/signin', {
        name: name,
        email: email,
        password: password
      })
      api.defaults.headers.Authorization = `Bearer ${token}`
      window.location.href="http://localhost:3000/Header"
      alert(`Logado com sucesso ${name}`)
    }catch(e) {
      alert('Erro no login')
    }
  }

0 个答案:

没有答案