[Livro MEAN full stack] - Autenticação com Passport em aplicações separadas API back-end e APP front-end - Stack MEAN

mean

#1

Meus caros… seguindo o que aprendi no livro, eu precisei separar o back-end do front-end. Eu criei duas APPS no front-end com AngulaJS que consomem uma unica API (NodeJS, Express e MongoDB).

Porém ao tentar proteger os recursos conforme capitulo 8 sessão 8.8,
preciso redirecionar a rota no express /auth/github/callback contida no meu /routes/auth.js para a rota do front-end no caso a pagina (view) desejada pelo meu usuário que precisou ser autenticada.

Como eu separei o meu front-end do back-end, ao chamar a rota /auth/github/callback o successRedirect acaba redirecionando para a rota ‘/’ da API (back-end). segue o código:

app.get('/auth/github/callback',
	passport.authenticate('github', {
		successRedirect: '/',
		failureRedirect: '/auth/github',
	})
);

Minha dúvida é como eu posso passar para o successRedirect a rota do fron-end (AngularJS) e não a rota da API (back-end).

Tentei fazer o seguinte cod, mas não rolou…

Back-end:

var session;

app.get('/auth/github', function authenticategithub(req, res, next) {
		session = '/#' + req.query.returnTo;
		next();
	},
	passport.authenticate('github'));

app.get('/auth/github/callback', function(req, res, next) {
	passport.authenticate('github', {
		successRedirect: session,
		failureRedirect: '/auth/github'
	});

});

Front-end:

<–partials view Auth.html -->
href=“http://localhost:3003/auth/github?returnTo={{location}}”

@flavioalmeida ou alguém sabe como eu poderia resolver isso?
Obrigado!


#2

Opa!

Você tem o código completo da aplicação no git? Olhando assim, só esse trecho, eu seguiria pela sua solução, mas ela parece não ter rolado. O passport é bem legal na hora de isolar a complexidade da autenticação, mas as convenções que ele assume às vezes não dá para mudar. Mas vamos ver o que descobrimos!