发出护照Oauth github请求时的GET,HEAD响应

时间:2019-02-19 05:32:26

标签: javascript node.js express

我不断得到

  

GET,HEAD

响应,当验证github用户时。此应用程序正在使用快递,并做出反应。

enter image description here

enter image description here

在被cors阻止时,我尝试了许多解决方案,尽管有些解决方案可能对某些开发人员有效。没有人适合我

例如,另一篇文章中的解决方案不起作用。

app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
  next();
});

Api通话

router.get('/auth/github', passport.authenticate('github',  { session: true, scope: ['profile'] }) );

router.get('/auth/github/callback', 
  passport.authenticate('github', { failureRedirect: '/' }),
  function(req, res) {
    // Successful authentication, redirect home.
    var token = jwt.sign({ id: req.user.id},  'nodeauthsecret');
    res.cookie("jwt", token, { expires: new Date(Date.now() + 10*1000*60*60*24)});
    res.redirect('http://127.0.0.1:8001/dashboard');
    console.log(token)
    console.log('this works');
});

app.js(快捷设置)

var express = require('express');
var app = express();
var userRoute = require('./routes/users');
var postRoute  = require('./routes/posts');
var bodyParser = require('body-parser');
var logger = require('morgan');
var models = require('./models');
var User = require('./models/user');
var session = require('express-session');
var cookieParser = require('cookie-parser') ;
var cookieSession = require('cookie-session');
var dotenv = require('dotenv');
var env = dotenv.config();
var cors = require('cors');
const port = process.env.PORT || 8000;
const passport = require('passport');
const path = require('path');
const allowOrigin = process.env.ALLOW_ORIGIN || '*'

// CORS Middleware

if (!process.env.PORT) {
  require('dotenv').config()
}

if (!process.env.PORT) {
  console.log('[api][port] 8000 set as default')
  console.log('[api][header] Access-Control-Allow-Origin: * set as default')
} else {
  console.log('[api][node] Loaded ENV vars from .env file')
  console.log(`[api][port] ${process.env.PORT}`)
  console.log(`[api][header] Access-Control-Allow-Origin: ${process.env.ALLOW_ORIGIN}`)
}


app.use(logger('dev'));
app.use(express.static(path.join(__dirname, 'public')));
app.use(cookieParser());
app.use(bodyParser());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false })); 



app.use(session({
  secret : 'nodeauthsecret',
  resave: false,
 saveUninitialized: true,

}));

// var corsOptions = {
//   origin: 'http://example.com',
//   optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204
// }

app.use(passport.initialize());
app.use(passport.session());
require('./config/passport')(passport);
require('./config/passport-github')(passport);

app.use(function(req, res, next) {
  res.locals.user = req.user; // This is the important line
  console.log(res.locals.user);
  next();
});

app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
  next();
});

app.use('/api/users', userRoute)

app.use('/api/posts',  postRoute )




app.listen(port, () => {
  console.log('[api][listen] http://localhost:' + port)
})

Redux操作

export const signWithGithub =  () => { 
    return  (dispatch) => {  
        Axios.get('localhost:8000/auth/github', {
            headers: {
             'content-type': 'application/x-www-form-urlencoded',
             'Access-Control-Allow-Credentials': true
            },
            crossdomain: true
         }).then( (res) => {
            console.log(res);
            dispatch({type: SIGN_GITHUB});
        });
    }
}

Home.js

   signGithub =  () => {
       this.props.signWithGithub();

    };
    ...

  <a onClick={this.signGithub}>
<Chip
    label="Sign In with Github"
    clickable
    avatar={< Avatar alt = "Natacha" src = "https://avatars0.githubusercontent.com/u/9919?s=280&v=4" />}
    component="a"
    className={classes.chip}/>
</a>

0 个答案:

没有答案