【如何使验证用户是否已登录,未登录则跳转回登录页面 _angular router 】 | IT修真院·坑乎
问题已收录 如何使验证用户是否已登录,未登录则跳转回登录页面
我也踩过这个坑( 2 )
已统计您的踩坑,无需重复点击
回答(3)
angular router
详细描述
截图
代码
编辑于2024-04-28
  • [成都|荣耀师兄]PM-陈丹婷
    0

    拦截器了解一下

    编辑于2018-06-06
  • [深圳|结业弟子]JS-陈皓宇
    0

    很多思路,不太建议用sessionStorage来存储实现。

    它也可以,但是一般用来做页面数据的交互。

    建议改成cookies来存用户有关的字段,不过要注意,1.4版本之前和之后,$cookies这个服务的写法会不一样($cookies的用法很简答,就不写了);

    然后ng1监听路由的实现例子如下:

    $transitions.onSuccess({}, function () {
       if (!$state.includes('home.searchHead.positionSearch')) {
           sessionStorage.removeItem('jobOptions')
       }
       if (!$state.includes('home.recommend')) {
           sessionStorage.removeItem('recommend')
       }
       if (!$state.includes('home.newest')) {
           sessionStorage.removeItem('newest')
       }
       if (!$state.includes('home.companyDetail')) {
           sessionStorage.removeItem('storeOptions');
           sessionStorage.removeItem('status')
       }
    });

    $transition是ng1中ui-router1.0版本以上的一个服务,1.0以下的用$routeStartChange, $routeChangeSuccess,配合$on监听。

    $rootScope.$on('$stateChangeSuccess', function () {
       if (!$cookies.get('loginStatus') && $location.path() !== "/login") {
           $state.go("login");
       }
       else if ($cookies.get('loginStatus') && $location.path() === "/login") {
           $state.go("home");
       }
    });


    编辑于2018-09-14
  • [武汉|结业弟子]JS-刘平
    0

    可以在登陆成功后使用sessionStorage保存一下账户名,然后在每个新页面获取这个属性,通过判断这个属性是否存在,不存在就强制跳转到登陆页面,当然,不要在每个页面判断,这样太麻烦了,使用路由守卫就好了

    编辑于2019-11-11