Как отправить токен jwt с узла на клиентскую часть (Angular js)
Я работаю в MEAN-приложении, где использую аутентификацию google с паспортом js. При успешной аутентификации я генерирую токен из полученных данных. Теперь я хочу отправить этот токен клиентской стороне, чтобы он мог быть сохранен в локальное хранилище, чтобы знать, какой пользователь вошел в систему, и его также можно использовать для отправки с заголовками для доступа к аутентифицированным маршрутам. Я пытался передать маркер в качестве параметров маршрута, но я не думаю, что это правильный подход.
passport.use(new GoogleStrategy({
clientID: configAuth.googleAuth.clientID,
clientSecret: configAuth.googleAuth.clientSecret,
callbackURL: configAuth.googleAuth.callbackURL
//passReqToCallback: true
},
(accessToken, refreshToken, profile, done)=> {
User.findOne({
'id': profile.id
}, (err, user) =>{
if (err)
return done(err);
if (user) {
token=jwt.sign({id:user.id,email:user.email,name:user.name},
config.jwtsecret);//creating a jwt token here
return done(null, user);
})
userRouter.get('/auth/google/callback', passport.authenticate('google', {
failureRedirect: '/login',
}), (req, res) => {
res.redirect('/google/' + token);
});
В угловой стороне JS -
myApp.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
$routeProvider
.when('/google/:token', {
templateUrl: 'views/dashboard.html',
controller:'eventController',
controllerAs:'eventCtrl',
resolve:{
"check":function(authService,$location){
authService.setToken(token)//set token to the local storage
$location.path('/dashboard');/redirect to dashboard
}
}
})