Я использую паспорт для аутентификации с помощью Google API, я отправляю токен по URL-адресу клиенту (приложение React), которое сохраняет его в localStorage.
Я хочу использовать этот токен: С при каждом вызове API (получить, отправить, поместить) я хочу отправить этот токен на сервер, но я не знал, как проверить этот токен на стороне сервера.
Passport Startegy:
app.use(passport.initialize()); // Used to initialize passport
app.use(passport.session()); // Used to persist login sessions
passport.use(new GoogleStrategy({
clientID: 'IDxxxxx',
clientSecret: 'SecreXXX',
callbackURL: 'http://localhost:3000/callback'
},
(accessToken, refreshToken, profile, done) => {
// Directory API here
var userData = {
name: profile.displayName,
token: accessToken
};
done(null, userData);
Аутентификация:
app.get('/auth/google', passport.authenticate('google', {
scope: ['profile'] // Used to specify the required data
}));
// The middleware receives the data from Google and runs the function on Strategy config
app.get('/callback', passport.authenticate('google'), (req, res) => {
var token = req.user.token;
res.redirect("http://localhost:8000?token=" + token);
});
API в express (который содержит методы CRUD):
app.use('/api', movieRouter)
На стороне реакции: Получение токена
componentWillMount() {
var query = queryString.parse(this.props.location.search);
if (query.token) {
window.localStorage.setItem("jwt", query.token);
// appel a directory api (avec token) puis sauvergarder dans redux puis redirection vers liste demandes
this.props.history.push("/");
}
}
Выполнение вызовов API:
import axios from 'axios'
const api = axios.create({
baseURL: 'http://localhost:3000/api',
})
export const insertMovie = payload => api.post(`/movie`, payload)
Мне просто нужно отправлять токен при каждом вызове и проверять его на стороне сервера.
Спасибо