ਫਾਇਰਬੇਸ ਵਿੱਚ ਉਪਭੋਗਤਾ ਈਮੇਲ ਪੁਸ਼ਟੀਕਰਨ ਤੋਂ ਬਾਅਦ ਸੈਸ਼ਨ ਕੂਕੀ ਦੇ ਦਾਅਵਿਆਂ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨਾ

ਫਾਇਰਬੇਸ ਵਿੱਚ ਉਪਭੋਗਤਾ ਈਮੇਲ ਪੁਸ਼ਟੀਕਰਨ ਤੋਂ ਬਾਅਦ ਸੈਸ਼ਨ ਕੂਕੀ ਦੇ ਦਾਅਵਿਆਂ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨਾ
ਫਾਇਰਬੇਸ ਵਿੱਚ ਉਪਭੋਗਤਾ ਈਮੇਲ ਪੁਸ਼ਟੀਕਰਨ ਤੋਂ ਬਾਅਦ ਸੈਸ਼ਨ ਕੂਕੀ ਦੇ ਦਾਅਵਿਆਂ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨਾ

ਫਾਇਰਬੇਸ ਪ੍ਰਮਾਣਿਕਤਾ ਨਾਲ ਸੈਸ਼ਨ ਕੂਕੀਜ਼ ਅਤੇ ਈਮੇਲ ਪੁਸ਼ਟੀਕਰਨ ਨੂੰ ਸੰਭਾਲਣਾ

ਸਰਵਰ-ਸਾਈਡ ਰੈਂਡਰਿੰਗ ਅਤੇ ਡੇਟਾ ਫੈਚਿੰਗ ਨੂੰ ਤਰਜੀਹ ਦੇਣ ਵਾਲੇ ਵੈਬ ਐਪਲੀਕੇਸ਼ਨਾਂ ਨੂੰ ਵਿਕਸਤ ਕਰਨ ਵੇਲੇ, ਜਿਵੇਂ ਕਿ NextJS ਅਤੇ React ਸਰਵਰ ਕੰਪੋਨੈਂਟਸ ਨਾਲ ਬਣਾਏ ਗਏ, ਉਪਭੋਗਤਾ ਪ੍ਰਮਾਣੀਕਰਨ ਨੂੰ ਕੁਸ਼ਲਤਾ ਨਾਲ ਪ੍ਰਬੰਧਨ ਕਰਨਾ ਮਹੱਤਵਪੂਰਨ ਬਣ ਜਾਂਦਾ ਹੈ। ਸੈਸ਼ਨ ਕੂਕੀਜ਼ ਨਾਲ ਫਾਇਰਬੇਸ ਪ੍ਰਮਾਣਿਕਤਾ ਦਾ ਲਾਭ ਲੈਣਾ ਇੱਕ ਮਜ਼ਬੂਤ ​​ਹੱਲ ਪੇਸ਼ ਕਰਦਾ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਉਹਨਾਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਸੈਸ਼ਨ ਦੇ ਸਮੇਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਇਹ ਪਹੁੰਚ, ਫਾਇਰਬੇਸ ਦੇ ਦਸਤਾਵੇਜ਼ਾਂ ਵਿੱਚ ਵਿਸਤ੍ਰਿਤ, ਪ੍ਰਮਾਣਿਕਤਾ ਲਈ ਸੈਸ਼ਨ ਕੂਕੀਜ਼ ਦੀ ਵਰਤੋਂ ਕਰਦੀ ਹੈ, ਸੈਸ਼ਨਾਂ ਨੂੰ 14 ਦਿਨਾਂ ਤੱਕ ਚੱਲਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੀ ਹੈ, ਜੋ ਕਿ ਡਿਫੌਲਟ ਟੋਕਨ ਆਈਡੀ ਜੀਵਨ ਕਾਲ ਤੋਂ ਕਾਫ਼ੀ ਜ਼ਿਆਦਾ ਹੈ। ਲਾਗੂ ਕਰਨ ਵਿੱਚ ਲੌਗਇਨ ਜਾਂ ਸਾਈਨ-ਅੱਪ ਕਰਨ ਵੇਲੇ ਉਪਭੋਗਤਾ ਦੀ ਟੋਕਨ ਆਈਡੀ ਤੋਂ ਇੱਕ ਸੈਸ਼ਨ ਕੂਕੀ ਨੂੰ ਮਿਨਟ ਕਰਨਾ ਅਤੇ ਇਸਨੂੰ ਇੱਕ HttpOnly ਕੂਕੀ ਵਜੋਂ ਸਟੋਰ ਕਰਨਾ, ਇੱਕ ਸੁਰੱਖਿਅਤ ਅਤੇ ਨਿਰੰਤਰ ਉਪਭੋਗਤਾ ਸੈਸ਼ਨ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣਾ ਸ਼ਾਮਲ ਹੈ।

ਹਾਲਾਂਕਿ, ਈਮੇਲ ਤਸਦੀਕ ਨੂੰ ਏਕੀਕ੍ਰਿਤ ਕਰਨ ਵੇਲੇ ਇਹ ਵਿਧੀ ਇੱਕ ਚੁਣੌਤੀ ਦਾ ਸਾਹਮਣਾ ਕਰਦੀ ਹੈ। ਇੱਕ ਉਪਭੋਗਤਾ ਦੁਆਰਾ ਇੱਕ ਈਮੇਲ ਅਤੇ ਪਾਸਵਰਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸਾਈਨ ਅੱਪ ਕਰਨ ਤੋਂ ਬਾਅਦ ਅਤੇ ਇੱਕ ਲਿੰਕ ਰਾਹੀਂ ਆਪਣੀ ਈਮੇਲ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਤੋਂ ਬਾਅਦ, email_verified ਉਹਨਾਂ ਦੀ ਸ਼ੈਸ਼ਨ ਕੂਕੀ ਵਿੱਚ ਫੀਲਡ ਵਿੱਚ ਕੋਈ ਤਬਦੀਲੀ ਨਹੀਂ ਹੁੰਦੀ, ਉਹਨਾਂ ਦੀ ਗੈਰ-ਪ੍ਰਮਾਣਿਤ ਸਥਿਤੀ ਨੂੰ ਦਰਸਾਉਂਦੀ ਹੈ। ਇਹ ਅੰਤਰ ਪੈਦਾ ਹੁੰਦਾ ਹੈ ਕਿਉਂਕਿ ਸੈਸ਼ਨ ਕੂਕੀ, ਇੱਕ ਵਾਰ ਸੈੱਟ ਹੋਣ ਤੋਂ ਬਾਅਦ, ਉਪਭੋਗਤਾ ਦੀ ਪ੍ਰਮਾਣਿਕਤਾ ਸਥਿਤੀ ਵਿੱਚ ਤਬਦੀਲੀਆਂ ਨੂੰ ਦਰਸਾਉਣ ਲਈ ਆਪਣੇ ਆਪ ਅੱਪਡੇਟ ਨਹੀਂ ਹੁੰਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਈਮੇਲ ਤਸਦੀਕ। ਇਸ ਮੁੱਦੇ ਨੂੰ ਸੰਬੋਧਿਤ ਕਰਨ ਲਈ ਇੱਕ ਰਣਨੀਤੀ ਦੀ ਲੋੜ ਹੈ ਜੋ ਸੁਰੱਖਿਆ ਜਾਂ ਉਪਭੋਗਤਾ ਅਨੁਭਵ ਨਾਲ ਸਮਝੌਤਾ ਕੀਤੇ ਬਿਨਾਂ ਸੈਸ਼ਨ ਕੂਕੀ ਨੂੰ ਤਾਜ਼ਾ ਜਾਂ ਅੱਪਡੇਟ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੀ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਟੋਕਨ ਨਿਰੰਤਰਤਾ ਅਤੇ ਸੈਸ਼ਨ ਪ੍ਰਬੰਧਨ 'ਤੇ ਫਾਇਰਬੇਸ ਦੀਆਂ ਸੀਮਾਵਾਂ ਨੂੰ ਧਿਆਨ ਵਿੱਚ ਰੱਖਦੇ ਹੋਏ।

ਹੁਕਮ ਵਰਣਨ
require('firebase-admin') ਸਰਵਰ ਤੋਂ Firebase ਨਾਲ ਇੰਟਰੈਕਟ ਕਰਨ ਲਈ Firebase Admin SDK ਨੂੰ ਆਯਾਤ ਕਰਦਾ ਹੈ।
require('express') ਆਯਾਤ ਐਕਸਪ੍ਰੈਸ, Node.js ਲਈ ਇੱਕ ਤੇਜ਼, ਨਿਰਪੱਖ, ਨਿਊਨਤਮ ਵੈੱਬ ਫਰੇਮਵਰਕ।
require('cookie-parser') ਕੂਕੀ-ਪਾਰਸਰ ਆਯਾਤ ਕਰਦਾ ਹੈ, ਇੱਕ ਮਿਡਲਵੇਅਰ ਜੋ ਕਲਾਇੰਟ ਬੇਨਤੀ ਆਬਜੈਕਟ ਨਾਲ ਜੁੜੀਆਂ ਕੂਕੀਜ਼ ਨੂੰ ਪਾਰਸ ਕਰਦਾ ਹੈ।
admin.initializeApp() ਸਰਵਰ-ਸਾਈਡ ਕ੍ਰੀਡੈਂਸ਼ੀਅਲਸ ਨਾਲ ਫਾਇਰਬੇਸ ਐਪ ਉਦਾਹਰਨ ਨੂੰ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ।
app.use() ਖਾਸ ਮਿਡਲਵੇਅਰ ਫੰਕਸ਼ਨ ਨੂੰ ਐਪ ਆਬਜੈਕਟ 'ਤੇ ਮਾਊਂਟ ਕਰਦਾ ਹੈ।
admin.auth().verifySessionCookie() ਫਾਇਰਬੇਸ ਸੈਸ਼ਨ ਕੂਕੀ ਦੀ ਪੁਸ਼ਟੀ ਕਰਦਾ ਹੈ ਅਤੇ ਇਸਦੇ ਡੀਕੋਡ ਕੀਤੇ ਟੋਕਨ ਦਾਅਵਿਆਂ ਨੂੰ ਵਾਪਸ ਕਰਦਾ ਹੈ।
admin.auth().createCustomToken() ਇੱਕ ਨਵਾਂ ਫਾਇਰਬੇਸ ਕਸਟਮ ਟੋਕਨ ਬਣਾਉਂਦਾ ਹੈ ਜੋ ਕਲਾਇੰਟ-ਸਾਈਡ ਪ੍ਰਮਾਣੀਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ।
admin.auth().createSessionCookie() ਦਿੱਤੇ ਆਈਡੀ ਟੋਕਨ ਅਤੇ ਵਿਕਲਪਾਂ ਤੋਂ ਇੱਕ ਨਵੀਂ ਸੈਸ਼ਨ ਕੂਕੀ ਬਣਾਉਂਦਾ ਹੈ।
res.cookie() ਸਰਵਰ ਤੋਂ ਕਲਾਇੰਟ ਨੂੰ ਇੱਕ ਕੂਕੀ ਭੇਜਦਾ ਹੈ।
app.listen() ਨਿਰਧਾਰਤ ਹੋਸਟ ਅਤੇ ਪੋਰਟ 'ਤੇ ਕਨੈਕਸ਼ਨਾਂ ਲਈ ਬੰਨ੍ਹਦਾ ਅਤੇ ਸੁਣਦਾ ਹੈ।
document.addEventListener() ਕਲਾਇੰਟ-ਸਾਈਡ JavaScript ਵਿੱਚ ਦਸਤਾਵੇਜ਼ ਆਬਜੈਕਟ ਵਿੱਚ ਇੱਕ ਇਵੈਂਟ ਲਿਸਨਰ ਜੋੜਦਾ ਹੈ।
fetch() ਇੱਕ ਦਿੱਤੇ URL ਨੂੰ ਇੱਕ ਨੈੱਟਵਰਕ ਬੇਨਤੀ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਇੱਕ ਵਾਅਦਾ ਵਾਪਸ ਕਰਦਾ ਹੈ ਜੋ ਇੱਕ ਜਵਾਬ ਆਬਜੈਕਟ ਵਿੱਚ ਹੱਲ ਹੁੰਦਾ ਹੈ।

ਸੈਸ਼ਨ ਕੂਕੀ ਰਿਫਰੈਸ਼ ਵਿਧੀ ਨੂੰ ਸਮਝਣਾ

ਬੈਕਐਂਡ ਸਕ੍ਰਿਪਟ ਨੇ ਉਪਭੋਗਤਾ ਦੀ ਈਮੇਲ ਦੀ ਪੁਸ਼ਟੀ ਹੋਣ ਤੋਂ ਬਾਅਦ ਉਸਦੀ ਸੈਸ਼ਨ ਕੁਕੀ ਨੂੰ ਤਾਜ਼ਾ ਕਰਨ ਦੀ ਮਹੱਤਵਪੂਰਣ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸੰਭਾਲਣ ਲਈ Node.js ਅਤੇ Firebase ਐਡਮਿਨ SDK ਦਾ ਲਾਭ ਪ੍ਰਦਾਨ ਕੀਤਾ ਹੈ। ਇਹ ਕਾਰਵਾਈ ਇੱਕ Express.js ਸਰਵਰ ਸਥਾਪਤ ਕਰਨ ਅਤੇ HTTP ਕੁਕੀਜ਼ ਨੂੰ ਕੁਸ਼ਲਤਾ ਨਾਲ ਪ੍ਰਬੰਧਿਤ ਕਰਨ ਲਈ ਕੁਕੀ-ਪਾਰਸਰ ਮਿਡਲਵੇਅਰ ਨੂੰ ਏਕੀਕ੍ਰਿਤ ਕਰਨ ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ। admin.initializeApp() ਫੰਕਸ਼ਨ ਫਾਇਰਬੇਸ ਐਪ ਨੂੰ ਸਰਵਰ-ਸਾਈਡ ਕ੍ਰੇਡੈਂਸ਼ੀਅਲਸ ਨਾਲ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਫਾਇਰਬੇਸ ਸੇਵਾਵਾਂ ਨਾਲ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਇੰਟਰੈਕਟ ਕਰਨ ਦੇ ਯੋਗ ਬਣਾਉਂਦਾ ਹੈ। ਇੱਕ ਮਿਡਲਵੇਅਰ ਫੰਕਸ਼ਨ, checkAuth, admin.auth().verifySessionCookie() ਦੀ ਵਰਤੋਂ ਕਲਾਇੰਟ ਬੇਨਤੀਆਂ ਦੇ ਨਾਲ ਭੇਜੀ ਗਈ ਸੈਸ਼ਨ ਕੂਕੀ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਕਰਦਾ ਹੈ। ਇਹ ਪੁਸ਼ਟੀਕਰਨ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਸਿਰਫ਼ ਪ੍ਰਮਾਣਿਤ ਬੇਨਤੀਆਂ ਹੀ ਸੰਵੇਦਨਸ਼ੀਲ ਰੂਟਾਂ ਜਾਂ ਓਪਰੇਸ਼ਨਾਂ 'ਤੇ ਜਾਣ। ਸਕ੍ਰਿਪਟ ਦਾ ਮੁੱਖ ਹਿੱਸਾ ਰੂਟ '/refresh-session' ਹੈ, ਜਿਸਨੂੰ ਕੋਈ ਵੀ ਪ੍ਰਮਾਣਿਤ ਉਪਭੋਗਤਾ ਬੇਨਤੀ ਕਰ ਸਕਦਾ ਹੈ। ਇਸ ਬੇਨਤੀ 'ਤੇ, ਮਿਡਲਵੇਅਰ ਉਪਭੋਗਤਾ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਦਾ ਹੈ, ਅਤੇ ਫਿਰ admin.auth().createCustomToken() ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਨਵਾਂ ਕਸਟਮ ਟੋਕਨ ਤਿਆਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਟੋਕਨ ਅੱਪਡੇਟ ਕੀਤੇ ਦਾਅਵਿਆਂ ਦੇ ਨਾਲ ਇੱਕ ਨਵੀਂ ਸੈਸ਼ਨ ਕੂਕੀ ਬਣਾਉਣ ਲਈ ਜ਼ਰੂਰੀ ਹੈ, ਜਿਸ ਵਿੱਚ ਈਮੇਲ ਪੁਸ਼ਟੀਕਰਨ ਸਥਿਤੀ ਵੀ ਸ਼ਾਮਲ ਹੈ।

ਨਵੀਂ ਤਿਆਰ ਕੀਤੀ ਸੈਸ਼ਨ ਕੂਕੀ ਨੂੰ ਇੱਕ ਅੱਪਡੇਟ ਮਿਆਦ ਪੁੱਗਣ ਦੇ ਸਮੇਂ ਦੇ ਨਾਲ ਕਲਾਇੰਟ ਨੂੰ ਵਾਪਸ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ, ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰਦੇ ਹੋਏ ਕਿ ਉਪਭੋਗਤਾ ਬਿਨਾਂ ਕਿਸੇ ਸੁਰੱਖਿਆ ਜੋਖਮ ਦੇ ਲੌਗਇਨ ਰਹਿੰਦਾ ਹੈ। ਇਹ ਪ੍ਰਕਿਰਿਆ ਈਮੇਲ ਤਸਦੀਕ ਤੋਂ ਬਾਅਦ ਅੱਪਡੇਟ ਨਾ ਹੋਣ ਵਾਲੇ ਈਮੇਲ_ਵੈਰੀਫਾਈਡ ਖੇਤਰ ਦੀ ਸ਼ੁਰੂਆਤੀ ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕਰਦੀ ਹੈ। ਕਲਾਇੰਟ ਸਾਈਡ 'ਤੇ, ਇੱਕ JavaScript ਸਨਿੱਪਟ ਸੈਸ਼ਨ ਰਿਫਰੈਸ਼ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਚਾਲੂ ਕਰਦਾ ਹੈ। ਇਹ ਇੱਕ ਖਾਸ ਘਟਨਾ (ਜਿਵੇਂ ਕਿ ਇੱਕ ਬਟਨ ਕਲਿੱਕ) ਲਈ ਸੁਣਦਾ ਹੈ ਅਤੇ '/refresh-session' ਅੰਤਮ ਬਿੰਦੂ ਨੂੰ ਇੱਕ GET ਬੇਨਤੀ ਕਰਦਾ ਹੈ। fetch() ਫੰਕਸ਼ਨ ਇੱਥੇ ਮਹੱਤਵਪੂਰਨ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਨੈੱਟਵਰਕ ਬੇਨਤੀ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ ਅਤੇ ਜਵਾਬ ਦੀ ਪ੍ਰਕਿਰਿਆ ਕਰਦਾ ਹੈ। ਜੇਕਰ ਸੈਸ਼ਨ ਰਿਫਰੈਸ਼ ਸਫਲ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਕਲਾਇੰਟ ਨੂੰ ਸੂਚਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਉਪਭੋਗਤਾ ਦੀ ਪ੍ਰਮਾਣਿਤ ਸਥਿਤੀ ਨੂੰ ਦਰਸਾਉਣ ਲਈ ਪੰਨੇ ਨੂੰ ਮੁੜ ਲੋਡ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਇਹ ਵਿਧੀ ਯਕੀਨੀ ਬਣਾਉਂਦੀ ਹੈ ਕਿ ਉਪਭੋਗਤਾ ਅਨੁਭਵ ਸਹਿਜ ਰਹਿੰਦਾ ਹੈ, ਉਪਭੋਗਤਾ ਨੂੰ ਸਾਈਨ ਅੱਪ ਕਰਨ ਤੋਂ ਬਾਅਦ ਕਲਾਇੰਟ ਸਾਈਡ 'ਤੇ ਟੋਕਨ ID ਨੂੰ ਦਸਤੀ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਜਾਂ ਸੁਰੱਖਿਅਤ ਕਰਨ ਦੀ ਲੋੜ ਤੋਂ ਬਿਨਾਂ, ਕਲਾਇੰਟ ਅਤੇ ਸਰਵਰ ਵਾਤਾਵਰਣਾਂ ਵਿੱਚ ਇੱਕ ਅੱਪਡੇਟ ਅਤੇ ਸੁਰੱਖਿਅਤ ਪ੍ਰਮਾਣਿਕਤਾ ਸਥਿਤੀ ਨੂੰ ਬਣਾਈ ਰੱਖਣ ਦੀ ਚੁਣੌਤੀ ਨੂੰ ਸੰਬੋਧਿਤ ਕਰਦਾ ਹੈ।

ਫਾਇਰਬੇਸ ਸੈਸ਼ਨ ਕੂਕੀਜ਼ ਨਾਲ ਈਮੇਲ ਪੁਸ਼ਟੀਕਰਨ ਸਥਿਤੀ ਅੱਪਡੇਟ ਨੂੰ ਲਾਗੂ ਕਰਨਾ

JavaScript ਅਤੇ Firebase SDK

// Backend: Node.js with Firebase Admin SDK
const admin = require('firebase-admin');
const express = require('express');
const cookieParser = require('cookie-parser');
const app = express();
app.use(cookieParser());
// Initialize Firebase Admin
admin.initializeApp({credential: admin.credential.applicationDefault()});
// Middleware to check authentication
const checkAuth = async (req, res, next) => {
  try {
    const sessionCookie = req.cookies.__session || '';
    const decodedClaims = await admin.auth().verifySessionCookie(sessionCookie, true);
    req.decodedClaims = decodedClaims;
    next();
  } catch (error) {
    res.status(401).send('Unauthorized');
  }
};
// Route to refresh session cookie
app.get('/refresh-session', checkAuth, async (req, res) => {
  const { uid } = req.decodedClaims;
  const newToken = await admin.auth().createCustomToken(uid);
  const expiresIn = 60 * 60 * 24 * 5 * 1000; // 5 days
  const sessionCookie = await admin.auth().createSessionCookie(newToken, { expiresIn });
  const options = { maxAge: expiresIn, httpOnly: true, secure: true };
  res.cookie('__session', sessionCookie, options);
  res.end('Session refreshed');
});
// Start the server
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server running on port ${PORT}`);
});

ਈਮੇਲ ਪੁਸ਼ਟੀਕਰਨ ਤੋਂ ਬਾਅਦ ਸੈਸ਼ਨ ਰਿਫਰੈਸ਼ ਲਈ ਕਲਾਇੰਟ-ਸਾਈਡ ਹੈਂਡਲਿੰਗ

ਵੈੱਬ ਕਲਾਇੰਟ ਲਈ JavaScript

// Client-side: JavaScript to trigger session refresh
document.addEventListener('DOMContentLoaded', function() {
  const refreshButton = document.getElementById('refresh-session-button');
  refreshButton.addEventListener('click', async () => {
    try {
      const response = await fetch('/refresh-session', { method: 'GET' });
      if (response.ok) {
        alert('Session has been refreshed. Please reload the page.');
      } else {
        throw new Error('Failed to refresh session');
      }
    } catch (error) {
      console.error('Error:', error);
      alert('Error refreshing session. See console for details.');
    }
  });
});

ਫਾਇਰਬੇਸ ਸੈਸ਼ਨ ਕੂਕੀਜ਼ ਨਾਲ ਸੁਰੱਖਿਆ ਅਤੇ ਉਪਭੋਗਤਾ ਅਨੁਭਵ ਨੂੰ ਵਧਾਉਣਾ

ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ ਫਾਇਰਬੇਸ ਪ੍ਰਮਾਣਿਕਤਾ ਨੂੰ ਏਕੀਕ੍ਰਿਤ ਕਰਨਾ, ਖਾਸ ਤੌਰ 'ਤੇ NextJS ਅਤੇ React ਸਰਵਰ ਕੰਪੋਨੈਂਟਸ ਨਾਲ ਬਣੇ, ਸੈਸ਼ਨ ਪ੍ਰਬੰਧਨ ਅਤੇ ਸੁਰੱਖਿਆ ਦੀ ਇੱਕ ਸੰਖੇਪ ਸਮਝ ਦੀ ਮੰਗ ਕਰਦੇ ਹਨ। ਫਾਇਰਬੇਸ ਦਾ ਸੈਸ਼ਨ ਕੂਕੀ ਵਿਧੀ ਰਵਾਇਤੀ ਟੋਕਨ-ਆਧਾਰਿਤ ਪ੍ਰਮਾਣਿਕਤਾ ਲਈ ਇੱਕ ਮਜਬੂਰ ਵਿਕਲਪ ਪੇਸ਼ ਕਰਦੀ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਉਹਨਾਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਸਰਵਰ-ਸਾਈਡ ਰੈਂਡਰਿੰਗ ਅਤੇ ਵਿਸਤ੍ਰਿਤ ਉਪਭੋਗਤਾ ਸੈਸ਼ਨਾਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਟੋਕਨ ਆਈਡੀਜ਼ ਉੱਤੇ ਸੈਸ਼ਨ ਕੂਕੀਜ਼ ਦੀ ਚੋਣ ਉਹਨਾਂ ਦੀ ਲੰਮੀ ਵੈਧਤਾ ਅਵਧੀ ਦੁਆਰਾ ਚਲਾਈ ਜਾਂਦੀ ਹੈ, ਜਿਸ ਨੂੰ ਵੱਧ ਤੋਂ ਵੱਧ 14 ਦਿਨਾਂ ਤੱਕ ਸੈਟ ਅਪ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਇਸ ਤਰ੍ਹਾਂ ਟੋਕਨ ਆਈਡੀ ਦੁਆਰਾ ਲੋੜੀਂਦੇ ਪ੍ਰਤੀ ਘੰਟਾ ਰਿਫਰੈਸ਼ ਦੀ ਤੁਲਨਾ ਵਿੱਚ ਉਪਭੋਗਤਾ ਦੇ ਮੁੜ-ਪ੍ਰਮਾਣੀਕਰਨ ਦੀ ਬਾਰੰਬਾਰਤਾ ਨੂੰ ਘਟਾਇਆ ਜਾ ਸਕਦਾ ਹੈ। ਇਹ ਪਹੁੰਚ ਉਹਨਾਂ ਸਥਿਤੀਆਂ ਵਿੱਚ ਵੀ ਜਿੱਥੇ ਕਲਾਇੰਟ ਵਿਸਤ੍ਰਿਤ ਸਮੇਂ ਲਈ ਅਕਿਰਿਆਸ਼ੀਲ ਹੈ, ਸੈਸ਼ਨ ਦੀ ਨਿਰੰਤਰਤਾ ਨੂੰ ਕਾਇਮ ਰੱਖ ਕੇ ਉਪਭੋਗਤਾ ਅਨੁਭਵ ਨੂੰ ਵਧਾਉਂਦਾ ਹੈ।

ਸੁਵਿਧਾ ਤੋਂ ਪਰੇ, ਸੈਸ਼ਨ ਕੂਕੀਜ਼ ਨੂੰ Http ਦੇ ਤੌਰ 'ਤੇ ਕੌਂਫਿਗਰ ਕੀਤਾ ਗਿਆ ਹੈ, ਉਹਨਾਂ ਨੂੰ ਕਲਾਇੰਟ-ਸਾਈਡ ਸਕ੍ਰਿਪਟਾਂ ਲਈ ਪਹੁੰਚਯੋਗ ਬਣਾ ਕੇ ਸੁਰੱਖਿਆ ਦੀ ਇੱਕ ਵਾਧੂ ਪਰਤ ਜੋੜਦੀ ਹੈ, ਇਸ ਤਰ੍ਹਾਂ ਕਰਾਸ-ਸਾਈਟ ਸਕ੍ਰਿਪਟਿੰਗ (XSS) ਹਮਲਿਆਂ ਦੇ ਜੋਖਮ ਨੂੰ ਘਟਾਉਂਦੀ ਹੈ। ਹਾਲਾਂਕਿ, ਇਹ ਸੁਰੱਖਿਅਤ ਸੈੱਟਅੱਪ ਚੁਣੌਤੀਆਂ ਪੇਸ਼ ਕਰਦਾ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਉਪਭੋਗਤਾ ਦੇ ਈਮੇਲ ਪੁਸ਼ਟੀਕਰਨ ਤੋਂ ਬਾਅਦ ਸੈਸ਼ਨ ਕੂਕੀ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਵਿੱਚ। ਕਿਉਂਕਿ ਸੈਸ਼ਨ ਕੂਕੀ ਦੇ ਅੰਦਰ ਈਮੇਲ_ਵੈਰੀਫਾਈਡ ਦਾਅਵਾ ਕੂਕੀ ਦੀ ਲੰਮੀ ਉਮਰ ਅਤੇ HttpOnly ਵਿਸ਼ੇਸ਼ਤਾ ਦੇ ਕਾਰਨ ਈਮੇਲ ਤਸਦੀਕ 'ਤੇ ਆਪਣੇ ਆਪ ਅੱਪਡੇਟ ਨਹੀਂ ਹੁੰਦਾ ਹੈ, ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਸੈਸ਼ਨ ਕੂਕੀ ਨੂੰ ਤਾਜ਼ਾ ਕਰਨ ਜਾਂ ਦੁਬਾਰਾ ਬਣਾਉਣ ਲਈ ਇੱਕ ਵਿਧੀ ਲਾਗੂ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਉਪਭੋਗਤਾ ਦੀ ਪ੍ਰਮਾਣਿਕਤਾ ਸਥਿਤੀ ਸਹੀ ਰੂਪ ਵਿੱਚ ਪ੍ਰਤੀਬਿੰਬਿਤ ਹੁੰਦੀ ਹੈ, ਅਤੇ ਈਮੇਲ ਤਸਦੀਕ ਸਥਿਤੀ ਦੇ ਅਧਾਰ ਤੇ ਪਹੁੰਚ ਨਿਯੰਤਰਣ ਉਚਿਤ ਰੂਪ ਵਿੱਚ ਲਾਗੂ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ।

ਸੈਸ਼ਨ ਕੂਕੀਜ਼ ਨਾਲ ਫਾਇਰਬੇਸ ਪ੍ਰਮਾਣਿਕਤਾ 'ਤੇ ਅਕਸਰ ਪੁੱਛੇ ਜਾਣ ਵਾਲੇ ਸਵਾਲ

  1. ਸਵਾਲ: ਫਾਇਰਬੇਸ ਪ੍ਰਮਾਣਿਕਤਾ ਕੀ ਹੈ?
  2. ਜਵਾਬ: ਫਾਇਰਬੇਸ ਪ੍ਰਮਾਣੀਕਰਨ ਤੁਹਾਡੇ ਐਪ ਲਈ ਵਰਤੋਂਕਾਰਾਂ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ ਬੈਕਐਂਡ ਸੇਵਾਵਾਂ, ਵਰਤੋਂ ਵਿੱਚ ਆਸਾਨ SDK, ਅਤੇ ਤਿਆਰ UI ਲਾਇਬ੍ਰੇਰੀਆਂ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਇਹ ਪਾਸਵਰਡ, ਫ਼ੋਨ ਨੰਬਰ, ਪ੍ਰਸਿੱਧ ਸੰਘੀ ਪਛਾਣ ਪ੍ਰਦਾਤਾ ਜਿਵੇਂ ਕਿ Google, Facebook ਅਤੇ Twitter, ਅਤੇ ਹੋਰ ਬਹੁਤ ਕੁਝ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਪ੍ਰਮਾਣੀਕਰਨ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ।
  3. ਸਵਾਲ: ਪ੍ਰਮਾਣਿਕਤਾ ਲਈ ਟੋਕਨ ਆਈਡੀ ਉੱਤੇ ਸੈਸ਼ਨ ਕੂਕੀਜ਼ ਦੀ ਵਰਤੋਂ ਕਿਉਂ ਕਰੀਏ?
  4. ਜਵਾਬ: ਸੈਸ਼ਨ ਕੂਕੀਜ਼ ਨੂੰ ਟੋਕਨ ਆਈ.ਡੀ. ਦੇ ਮੁਕਾਬਲੇ ਲੰਬੇ ਸਮੇਂ ਤੋਂ ਬਾਅਦ ਮਿਆਦ ਪੁੱਗਣ ਲਈ ਸੈੱਟ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਵਾਰ-ਵਾਰ ਵਰਤੋਂਕਾਰਾਂ ਦੀ ਮੁੜ-ਪ੍ਰਮਾਣੀਕਰਨ ਦੀ ਲੋੜ ਘਟ ਜਾਂਦੀ ਹੈ। ਉਹ ਕਲਾਇੰਟ-ਸਾਈਡ ਸਕ੍ਰਿਪਟਾਂ ਤੱਕ ਪਹੁੰਚ ਤੋਂ ਬਾਹਰ ਹੋ ਕੇ ਸੁਰੱਖਿਆ ਨੂੰ ਵੀ ਵਧਾਉਂਦੇ ਹਨ, ਇਸ ਤਰ੍ਹਾਂ XSS ਹਮਲਿਆਂ ਤੋਂ ਸੁਰੱਖਿਆ ਕਰਦੇ ਹਨ।
  5. ਸਵਾਲ: ਮੈਂ ਸੈਸ਼ਨ ਕੂਕੀ ਦੀ ਮਿਆਦ ਸਮਾਪਤੀ ਨੂੰ ਕਿਵੇਂ ਸੰਭਾਲਾਂ?
  6. ਜਵਾਬ: ਹਰੇਕ ਬੇਨਤੀ ਦੇ ਨਾਲ ਸੈਸ਼ਨ ਕੂਕੀ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ ਸਰਵਰ-ਸਾਈਡ ਜਾਂਚ ਨੂੰ ਲਾਗੂ ਕਰੋ। ਜੇਕਰ ਮਿਆਦ ਪੁੱਗ ਗਈ ਹੈ, ਤਾਂ ਉਪਭੋਗਤਾ ਨੂੰ ਮੁੜ-ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ ਕਹੋ। ਤੁਸੀਂ ਸਮੇਂ-ਸਮੇਂ 'ਤੇ ਸੈਸ਼ਨ ਕੂਕੀ ਨੂੰ ਤਾਜ਼ਾ ਕਰਨ ਲਈ ਇੱਕ ਵਿਧੀ ਵੀ ਲਾਗੂ ਕਰ ਸਕਦੇ ਹੋ।
  7. ਸਵਾਲ: ਕੀ ਸੈਸ਼ਨ ਕੂਕੀਜ਼ ਨੂੰ ਸਰਵਰ-ਸਾਈਡ ਰੈਂਡਰਿੰਗ ਨਾਲ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ?
  8. ਜਵਾਬ: ਹਾਂ, ਸੈਸ਼ਨ ਕੂਕੀਜ਼ ਉਹਨਾਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਖਾਸ ਤੌਰ 'ਤੇ ਢੁਕਵੇਂ ਹਨ ਜੋ ਸਰਵਰ-ਸਾਈਡ ਰੈਂਡਰਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ, ਕਿਉਂਕਿ ਉਹਨਾਂ ਨੂੰ HTTP ਸਿਰਲੇਖਾਂ ਰਾਹੀਂ ਸੁਰੱਖਿਅਤ ਰੂਪ ਨਾਲ ਪ੍ਰਸਾਰਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹੋਏ ਕਿ ਉਪਭੋਗਤਾ ਦੀ ਪ੍ਰਮਾਣਿਕਤਾ ਸਥਿਤੀ ਸਰਵਰ-ਸਾਈਡ ਉਪਲਬਧ ਹੈ।
  9. ਸਵਾਲ: ਈਮੇਲ ਤਸਦੀਕ ਤੋਂ ਬਾਅਦ ਮੈਂ ਸੈਸ਼ਨ ਕੂਕੀ ਨੂੰ ਕਿਵੇਂ ਅਪਡੇਟ ਕਰਾਂ?
  10. ਜਵਾਬ: ਈਮੇਲ ਤਸਦੀਕ ਤੋਂ ਬਾਅਦ, ਸੈਸ਼ਨ ਕੂਕੀ ਨੂੰ ਅੱਪਡੇਟ ਕੀਤੇ ਦਾਅਵਿਆਂ ਦੇ ਨਾਲ ਦੁਬਾਰਾ ਤਿਆਰ ਕਰੋ, ਈਮੇਲ_ਪ੍ਰਮਾਣਿਤ ਸਥਿਤੀ ਸਮੇਤ, ਅਤੇ ਕਲਾਇੰਟ-ਸਾਈਡ 'ਤੇ ਪੁਰਾਣੀ ਕੂਕੀ ਨੂੰ ਨਵੀਂ ਨਾਲ ਬਦਲੋ।

ਫਾਇਰਬੇਸ ਵਿੱਚ ਸੈਸ਼ਨ ਕੂਕੀ ਅੱਪਡੇਟਾਂ 'ਤੇ ਪ੍ਰਤੀਬਿੰਬਤ ਕਰਨਾ

ਸੈਸ਼ਨ ਕੂਕੀਜ਼ ਦੇ ਨਾਲ ਫਾਇਰਬੇਸ ਪ੍ਰਮਾਣਿਕਤਾ ਨੂੰ ਅਪਣਾਉਣ ਨਾਲ ਸੈਸ਼ਨ ਦੀ ਮਿਆਦ ਨੂੰ ਵਧਾ ਕੇ ਅਤੇ ਸੁਰੱਖਿਆ ਨੂੰ ਵਧਾ ਕੇ ਵੈੱਬ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ ਪ੍ਰਮਾਣਿਕਤਾ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਮਹੱਤਵਪੂਰਨ ਸੁਧਾਰ ਹੁੰਦਾ ਹੈ। ਫਿਰ ਵੀ, ਉਪਭੋਗਤਾ ਦੇ ਈਮੇਲ ਤਸਦੀਕ ਤੋਂ ਬਾਅਦ ਸੈਸ਼ਨ ਕੂਕੀਜ਼ ਨੂੰ ਅਪਡੇਟ ਕਰਨ ਦਾ ਮੁੱਦਾ ਇੱਕ ਧਿਆਨ ਦੇਣ ਯੋਗ ਚੁਣੌਤੀ ਪੇਸ਼ ਕਰਦਾ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਅਜਿਹੇ ਹਾਲਾਤਾਂ ਵਿੱਚ ਜਿੱਥੇ ਸੁਰੱਖਿਆ ਕਾਰਨਾਂ ਕਰਕੇ ਤੁਰੰਤ ਟੋਕਨ ਆਈਡੀ ਮਿਟਾਉਣ ਦਾ ਅਭਿਆਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਸਥਿਤੀ ਡਿਵੈਲਪਰਾਂ ਲਈ ਰਣਨੀਤੀਆਂ ਤਿਆਰ ਕਰਨ ਦੀ ਜ਼ਰੂਰਤ ਨੂੰ ਰੇਖਾਂਕਿਤ ਕਰਦੀ ਹੈ ਜੋ ਈਮੇਲ ਤਸਦੀਕ ਦੇ ਪੂਰਾ ਹੋਣ 'ਤੇ ਸੈਸ਼ਨ ਕੂਕੀਜ਼ ਨੂੰ ਤਾਜ਼ਗੀ ਜਾਂ ਰੀਜਨਰੇਟ ਕਰਨ ਦੇ ਯੋਗ ਬਣਾਉਂਦੀਆਂ ਹਨ। ਅਜਿਹੇ ਉਪਾਅ ਇੱਕ ਸੁਰੱਖਿਅਤ ਅਤੇ ਉਪਭੋਗਤਾ-ਕੇਂਦ੍ਰਿਤ ਪ੍ਰਮਾਣੀਕਰਨ ਪ੍ਰਣਾਲੀ ਨੂੰ ਬਣਾਈ ਰੱਖਣ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹਨ। ਸੈਸ਼ਨ ਕੂਕੀਜ਼ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਸਰਵਰ-ਸਾਈਡ ਹੱਲਾਂ ਨੂੰ ਲਾਗੂ ਕਰਕੇ, ਡਿਵੈਲਪਰ ਇਹ ਯਕੀਨੀ ਬਣਾ ਸਕਦੇ ਹਨ ਕਿ ਉਪਭੋਗਤਾ ਦੀ ਪ੍ਰਮਾਣਿਕਤਾ ਸਥਿਤੀ ਸਹੀ ਰੂਪ ਵਿੱਚ ਪ੍ਰਤੀਬਿੰਬਿਤ ਹੈ, ਇਸ ਤਰ੍ਹਾਂ ਸੁਰੱਖਿਆ ਨਾਲ ਸਮਝੌਤਾ ਕੀਤੇ ਬਿਨਾਂ ਇੱਕ ਨਿਰਵਿਘਨ ਉਪਭੋਗਤਾ ਅਨੁਭਵ ਦੀ ਸਹੂਲਤ ਦਿੰਦਾ ਹੈ। ਪੇਸ਼ ਕੀਤੀ ਗਈ ਚਰਚਾ ਅਤੇ ਹੱਲ ਆਧੁਨਿਕ ਵੈੱਬ ਵਿਕਾਸ ਵਿੱਚ ਲਚਕਤਾ ਅਤੇ ਸੁਰੱਖਿਆ ਦੀ ਮਹੱਤਤਾ 'ਤੇ ਜ਼ੋਰ ਦਿੰਦੇ ਹਨ, ਖਾਸ ਤੌਰ 'ਤੇ ਜਦੋਂ ਸਰਵਰ-ਰੈਂਡਰਡ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ ਪ੍ਰਮਾਣਿਕਤਾ ਨਾਲ ਨਜਿੱਠਦੇ ਹਨ।