title: Vue router beforeEach not called if destination redirect resolves to same path
body: <p>I have a problem when I use <code>router.push('/')</code> as the last step of a logout.</p>
  
  <p>If I trigger the logout procedure from the same route that <code>/</code> <code>redirect</code>s to, the <code>router.beforeEach</code> will not be triggered and therefore not redirect the user to the <code>/login</code> but still show the route that should only be visible to logged in users (which the user isn't any more at the end of the logout procedure).</p>
  
  <pre><code>{
    path: '/',
    redirect: 'foo'
  },
  {
    path: '/foo',
    name: 'foo',
    component: Foo,
    meta: {
      requiresAuth: true
    }
  },
  </code></pre>
  
  <p>and</p>
  
  <pre><code>router.beforeEach((to, from, next) =&gt; {
    ...
    if(to.requiresAuth &amp;&amp; userLoggedIn == false) 
      next('/login')
    ...
  </code></pre>
  
  <p>So if I trigger the logout from any route other than <code>/foo</code> it works as expected but if I trigger it from <code>/foo</code> the user is <strong>not</strong> redirected to <code>/login</code>.</p>
  
  <p>I guess that might possibly be intended behaviour to make the routing as efficient as possible but in this case it is definitely not what I want.</p>
  
  <p>How do I ensure my <code>beforeEach</code> route guards will be evaluated on every <code>router.push/replace</code>?</p>