এটা সম্ভব কিনা একটি ব্যবহারকারী হবে যখন একটি পৃষ্ঠা লোড শুরু সাইন ইন করতে, একটি কাজ যদিও প্রায়।
সেশন এবং ট্যাবগুলির মধ্যে এটি চালিয়ে যাওয়ার জন্য আপনি স্থানীয় লেখার স্থিতিতে গত লেখক স্থিতি মুখস্ত করতে পারেন ।
তারপরে, পৃষ্ঠাটি লোড করা শুরু হওয়ার পরে, আপনি আশাবাদীভাবে ধরে নিতে পারেন যে ব্যবহারকারীটি স্বয়ংক্রিয়ভাবে পুনরায় সাইন ইন হয়ে যাবে এবং ডায়ালগটি স্থগিত না করা পর্যন্ত আপনি নিশ্চিত না হন (যেমন onAuthStateChangedআগুনের পরে )। অন্যথায়, localStorageকীটি খালি থাকলে আপনি এখনই ডায়ালগটি প্রদর্শন করতে পারেন।
ফায়ারবেস onAuthStateChangedইভেন্টটি পৃষ্ঠা লোডের প্রায় 2 সেকেন্ড পরে চালিত হবে ।
if (!localStorage.getItem('myPage.expectSignIn')) showDialog()
firebase.auth().onAuthStateChanged(user => {
if (user) {
localStorage.setItem('myPage.expectSignIn', '1')
} else {
localStorage.removeItem('myPage.expectSignIn')
}
})
আমি এটি
প্রতিক্রিয়া এবং
প্রতিক্রিয়া-রাউটার দিয়ে ব্যবহার করছি । আমি
componentDidMountআমার অ্যাপ্লিকেশন মূল উপাদানটির উপরে কোডটি রেখেছি। সেখানে, রেন্ডারে, আমার কিছু আছে
PrivateRoutes
<Router>
<Switch>
<PrivateRoute
exact path={routes.DASHBOARD}
component={pages.Dashboard}
/>
...
এবং এভাবেই আমার প্রাইভেটরউট বাস্তবায়ন করা হয়:
export default function PrivateRoute(props) {
return firebase.auth().currentUser != null
? <Route {...props}/>
: localStorage.getItem('myPage.expectSignIn')
? <Spinner centered size={400}/>
: (
<>
Redirecting to sign in page.
{ location.replace(`/login?from=${props.path}`) }
</>
)
}