I am using react-router 2. My routes are defined as
<Route path="/" component={App}>
<IndexRoute component={Home}/>
<Route path="/about" component={About}/>
<Route path="/login" component={Login} onEnter={redirectToDashboard}/>
<Route path="/logout" component={Logout} onEnter={logoutSession}/>
<Route path="/dashboard" component={Dashboard} onEnter={redirectToLogin}/>
</Route>
Everything working fine but I am having problem disabling back button from my dashboard page.
After successful login I am redirecting user to dashboard page but when user clicks back button it goes to login page again. I want to disable back button of browser
when user is on dashboard page.
On your page which you want to disable back (example, on LoginApp ) add this block, to disable web history back
it's not possible to disable browser buttons. my advice is to redirect user back to dashboard page if he/she is logged
in your login screen add replace to /dashboard
The reason is replace your current path (/login) to /dashboard. Before adding this, please make sure you setup your authentication correctly.
In order to improve the code reusability, we can add an event listener in our
index.html
and dispatch the browser back disable event from all of ourcomponentDidMount()
methods.In the
index.html
,In React
componentDidMount()
method,Applying all this hacks I see url change to 'login' for a tiny bit moment and then to 'wherever-we-push' . Instead what we can do is-> In login, where api hit success, do: history.replace('/Whatever_screen'). This will remove login screen from window.history stack.
Your best bet, is when the user is login he/ she is redirected to dashbaord. if for some reason the user click on back button you should:
if the user is logged in stay on the page dashboard
it will be not possible to go back.