在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML5/ 前后端分離中的登錄權(quán)限問題

前后端分離中的登錄權(quán)限問題

剛開始做一個小項目,用的angular,現(xiàn)在遇到了一個前端權(quán)限控制問題:用戶在沒有登錄的情況下輸入了頁面其他模塊的地址,比如http://localhost:4200/user,用什么判斷用戶是否登錄呢?
一開始想的是登錄以后本地存一個cookie,然后讀取這個cookie來判斷(我搜了一下,也是這么跳轉(zhuǎn)的),那用戶如果把cookie禁用了怎么辦?
(后端數(shù)據(jù)接口是有權(quán)限驗證的,現(xiàn)在就是為了用戶友好性,需要處理一下路由跳轉(zhuǎn))

回答
編輯回答
傻丟丟

cookielocalStorage 都被禁用了的話,這個問題確實沒有更好的解法。
假如你實在想處理,可以在登錄的時候判斷用戶是否開啟了 cookielocalStorage,假如未開啟,引導(dǎo)其開啟,然后允許其登錄。

2018年9月20日 20:50
編輯回答
入她眼

可以使用router來做,router里面提供了兩個接口[CanActivate][1][CanDeactivate][2]
你可以實現(xiàn)CanActivate這個接口,然后在里面做登錄或者其他權(quán)限的驗證。
如果cookie禁用,可以考慮使用localStorage來做。

這是官方的例子:

class UserToken {}
class Permissions {
  canDeactivate(user: UserToken, id: string): boolean {
    return true;
  }
}

@Injectable()
class CanActivateTeam implements CanActivate<TeamComponent> {
  constructor(private permissions: Permissions, private currentUser: UserToken) {}

  CanActivate(
    component: TeamComponent,
    currentRoute: ActivatedRouteSnapshot,
    currentState: RouterStateSnapshot,
    nextState: RouterStateSnapshot
  ): Observable<boolean>|Promise<boolean>|boolean {
    return this.permissions.CanActivate(this.currentUser, route.params.id);
  }
}

@NgModule({
  imports: [
    RouterModule.forRoot([
      {
        path: 'team/:id',
        component: TeamCmp,
        canDeactivate: [CanActivateTeam ]
      }
    ])
  ],
  providers: [CanActivateTeam , UserToken, Permissions]
})
class AppModule {}
2017年2月17日 02:53