Node.js oAuth在前端还是服务器端?
我有一个MERN应用程序(前端是react,后端是node、express和Mongo) 我希望为用户实现oAuth登录 到目前为止,我正在使用Google api在前端执行自动操作,然后将令牌发送到服务器,在服务器上获取Google用户并检查数据库是否存在用户ID,或者创建一个新用户并返回jwt以供将来验证 现在我正在考虑使用passportjs作为我的oauth中间件(主要是因为我需要更多的身份验证提供商,如Facebook等),但是只在服务器上进行身份验证是一个好主意吗 我也在考虑使用auth0,它有前端和服务器端选项,但也不确定哪种策略更好Node.js oAuth在前端还是服务器端?,node.js,reactjs,oauth,passport.js,auth0,Node.js,Reactjs,Oauth,Passport.js,Auth0,我有一个MERN应用程序(前端是react,后端是node、express和Mongo) 我希望为用户实现oAuth登录 到目前为止,我正在使用Google api在前端执行自动操作,然后将令牌发送到服务器,在服务器上获取Google用户并检查数据库是否存在用户ID,或者创建一个新用户并返回jwt以供将来验证 现在我正在考虑使用passportjs作为我的oauth中间件(主要是因为我需要更多的身份验证提供商,如Facebook等),但是只在服务器上进行身份验证是一个好主意吗 我也在考虑使用au
非常感谢您的帮助。我最近花了好几个晚上来处理这个 一般来说:
- 客户端加载并启动google gapi脚本
- 请求用户同意
- 谷歌发送代币
- 您从服务器向Google发送此令牌并确认用户
const loginGoogle = async () => {
const loadGapi = () =>
new Promise((resolve, reject) => {
const script = document.createElement('script');
script.src = 'https://apis.google.com/js/api.js'; //loading gapi Script
console.log('SCRIPT: ', script);
script.onload = () => {
console.log('GAPIS SCRIPT LOADED');
gapi.load('auth2', () => {
const auth2 = gapi.auth2.init(options);
console.log('AUTH2: ', auth2);
resolve(auth2);
});
};
document.body.appendChild(script);
});
const ath2 = await loadGapi();
const code = await ath2.grantOfflineAccess();
return PostApi('auth/getgoogletoken', code); // sending to server for further processing
};