2016-04-12 42 views
0

我正在为应用程序 - react/redux/webpack构建身份验证(使用bcrypt,jwt) - 并且我的身份验证功能与我的登录容器(登录表单我想在下面的认证文件中运行函数并将用户发布到我们的db)。react/redux应用程序中的身份验证错误

当我尝试从我的身份验证代码(下面)导入签名功能(从'./Auth/controllers/authentication'导入{signin})到我的登录容器中时,出现一个令人讨厌的错误。我究竟做错了什么?我如何在我的登录模式/屏幕中使用身份验证功能?

ERROR in ./~/bcrypt-nodejs/bCrypt.js 
Module parse failed: /Users/myname/Desktop/SaltyEndzone/node_modules/babel-loader/index.js?{"presets":["es2015","react"]}!/Users/myname/Desktop/groupname/node_modules/bcrypt-nodejs/bCrypt.js Line 293: Octal literals are not allowed in strict mode. 
You may need an appropriate loader to handle this file type. 
| rounds = r1 + r2; 
| real_salt = salt.substring(off + 3, off + 25); 
| password = password + (minor >= 'a' ? "\000" : ""); 
| 
| var buf = new Buffer(password); 
@ ./public/Login/Auth/models/user.js 6:13-37 

所以,这(错误之一),现在这里的代码(以下认证和登录模态以及):

//authentication.js 

const jwt = require('jwt-simple'); 
const config = require('../config'); 

const User = require('../models/user'); 


function tokenForUser(user) { 
    const timestamp = new Date().getTime(); 

    return jwt.encode({ sub: user.id, iat: timestamp }, config.secret); 
} 


exports.signin = function(req, res, next) { 

    res.send({token: tokenForUser(req.user)}); 
} 


exports.signup = function(req, res, next) { 
    const email = req.body.email; 
    const password = req.body.password; 


    if (!email || !password) { 
    return res.status(422).send({error: 'You must provide email and password'}); 
    } 

      User.findOne({email: email }, function(err, existingUser) { 
    if(err) { 
     return next(err); 
    } 


    if (existingUser) { 
     return res.status(422).send({error: 'Email is in use'}) 
    } 


    const user = new User({ 
     email: email, 
     password: password 
    }); 

    user.save(function(err){ 
     if(err) { 
     return next(err); 
     } 

    res.json({token: tokenForUser(user)}); 
    });  

    }); 
} 

这里是登录代码:

import React, { Component } from 'react'; 
import { render } from 'react-dom'; 
import { Button, Modal } from 'react-bootstrap'; 

import { signin } from './Auth/controllers/authentication'; 


export default class Login extends Component { 

    render() { 

    const { openLogin, closeLogin, login } = this.props; 

    return (
     <div> 
     <div className="login-corner"> 
     <span className="login" onClick={openLogin}>LOGIN</span> 
     </div> 
      <Modal className="modal-dialog" bsSize="small" show={login.login} closeTimeoutMS={150}> 
      <Modal.Body> 
      <Modal.Title className="login-title">Login</Modal.Title> 
      </Modal.Body> 
      <div className="login-input"> 
       <div className="form-group"> 
       <div className="user-input"> 
        <i className="glyphicon glyphicon-user"></i> 
        <input type="email" className="form-control" placeholder="Username"/> 
       </div> 
       <div className="password-input"> 
        <i className="glyphicon glyphicon-lock"></i> 
        <input type="password" className="form-control" placeholder="Password"/> 
       </div> 
       </div> 
      </div> 
      <div className="login-button"> 
       <Button className="btn btn-info" onClick={closeLogin}>Welcome Back!</Button> 
      </div> 
      <div className="register-button"> 
       <a className="register-link" ui-sref="register" onClick={closeLogin}>Not a member? Sign up!</a> 
      </div> 
      </Modal> 
     </div> 
    ); 
    } 
} 

回答