2017-08-02 10 views
0

私はノードjsの初心者ですので、事前に謝罪してください。SafariブラウザでExpress-Passportローカル認証が機能しない

 app.use(express.static(__dirname + uiDir)); 
     app.use(cookieParser('SecretKey')); 
     app.use(bodyParser.json()); 
     app.use(bodyParser.urlencoded({extended: true})); 
     app.use(session({ 
      secret: 'SecretKey', 
      resave: true, 
      saveUninitialized: true, 
      rolling:'true', 
      cookie:{ 
       maxAge: 60*1000*30, 
       secure:true, 
       httpOnly: true, 
      } 
     })); 

     app.use(passport.initialize()); 
     app.use(passport.session()); 
     app.use(helmet({ 
      frameguard: { 
       action: 'sameorigin' 
      } 
     })); 
     app.use(flash()); 



     passport.serializeUser(function(user, done) { 
      done(null, user.username); 
     }); 

     passport.deserializeUser(function(user, done) { 
      done(null, user); 
     });  
     passport.use('local',new LocalStrategy(

       function(username, password, done) { 

       var loginqry = { 
        jsonrpc: '2.0', 
           id: 12, 
         method: 'call', 
         params: [ 'toIntergrateLater', 'users', 
           'authenticate', 

            {"username":username, 
            "password":password 
            } 

         ] 
       }; 

       BackendAuthservice.auth(loginqry,function(data){     

        if(data.result.error=="Wrong password"){           
        return done(null, false, { message: 'Incorrect username or password.' }); 
        } 
        if(data.result.error=="User not found"){ 
         return done(null, false, { message: 'User not found' }); 
        } 

        else{ 
         data.result.status = true; 
         return done(null,data); 
        } 
       }); 
     })); 

私はMACサファリ(req.user)は未定義に来ているアクセスするときにこのコードはIE、Firefoxの、クロム、マック・グーグル・クロムが、のために正常に動作しています。

答えて

0

が行われ、コールバックでuser.usernameの代わりにユーザーを渡して試してみてください、私はパスポート-JSの成功リダイレクトに未定義req.userを取得していたため、サファリから

着信要求を助けてください。 serializeユーザーでuser.usernameが渡された場合、deserializeメソッドはユーザー名を引数として使用する必要があります。

passport.serializeUser(function(user, done) { 
     done(null, user); 
    }); 
関連する問題