在Angular中,我们将Route Guard定义为可向其中注入共享服务的打字稿类
@Injectable()
export class AppRouteGuard implements CanActivate, CanActivateChild {
constructor(
private _router: Router,
private _sessionService: SessionService,
) { }
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
if (!this._sessionService.user) {
this._router.navigate(['/account/login']);
...
在Vue中,Navigation Guard通常是如下定义的功能
function guard(to, from, next) { ... }
在我的项目中,我将其与路由保存在同一文件中。
我不确定登录后如何注册Vue共享服务的单个实例,以保留与用户相关的数据。
我需要的是在Navigation Guard级别解析共享服务,并检查用户是否不为空(这表示他们已登录)。
这变得非常棘手,我在这个难题上进行了谷歌搜索,并找到了将服务绑定到Vue.prototype
的建议,例如
Vue.prototype.$sharedService = new SharedService();
但是我无法在Navigation Guard级别解析该实例。
在Vue中实现相同行为的正确/最佳方法是什么?