2017-08-08 1 views
0

Ich erkannte die Autorisierung des Benutzers durch den Pass (Koa, Mongodb, React, Redux).haw laden Benutzerinformationen nach Anmeldung SPA koa.js

router.post('/login', function(ctx, next) { 

    return passport.authenticate('local', async function(err, user, info) { 
     if (err) throw err; 

     if (user === false) { 
      ctx.status = 401; 
      ctx.body = { error: info }; 
     } else { 
      ctx.body = { 
       success: true 
      }; 
      await ctx.login(user); 
     } 
    })(ctx, next); 
}) 

Wenn sich der Benutzer anmeldet, leitet er zur Profilseite (Hauptseite) um.

router.get('/login', function(ctx, next) { 
    if (ctx.isAuthenticated()) { 
     ctx.redirect('/'); 
    } else { 
     ctx.body = fs.readFileSync(path.resolve(path.join('build', 'index.html')), 'utf8') 
    } 
}); 

Da ich einen Wellnessbereich I (Routing auf dem Client über einen reagieren-Router) immer eine statische Datei übergibt

Das Problem ist, dass ich nicht verstehen kann, wie ich Informationen über den Benutzer erhalten, wenn die Profilseite wird geladen

Wenn ich eine Ajax-Anfrage (Feth) von der React-Komponente, dann die Anfrage für eine andere Sitzung ID senden und es nicht mit dem Benutzer verbunden ist.

Oder muss ich dies auf dem Server tun, aber wie könnte ich den Speicher auf dem Server verwenden?

Wie kann dieses Problem am besten gelöst werden?

Antwort

0

Nun, während es nicht der beste Weg sein könnte, ist der einfachste Weg, dies zu tun, einen Ersatz auf dem Körper einen Abschnitt in Ihrer HTML-Datei zu haben, wäre wie ..

<script type="text/javascript"> 
    window.currentUser = $$USER$$ 
</script> 

Und dann tun.

let content = fs.readFileSync(path.resolve(path.join('build', 'index.html')), 'utf8') 
content = content.replace('$$USER$$', JSON.stringify(user)) 
ctx.body = content 

In Ihrer React App können Sie window.currentUser verwenden.

Verwandte Themen