You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过SmartEdit访问Spartacus时是否可以禁用protected routes?

SmartEdit访问Spartacus时禁用受保护路由的实现方法

可以实现该需求,核心思路是识别当前是否运行在SmartEdit环境中,动态关闭受保护路由的未登录强制跳转逻辑,具体步骤如下:

步骤1:调用官方能力识别SmartEdit环境

Spartacus已经封装了环境检测能力,直接注入SmartEditLauncherService调用其isLaunchInSmartEdit()方法,即可拿到当前是否为SmartEdit访问场景的布尔值。

步骤2:自定义路由守卫覆盖原生拦截逻辑

原生的受保护路由跳转逻辑由ProtectedRoutesGuard实现,你可以自定义一个Guard继承该原生守卫,在路由拦截逻辑前加入SmartEdit环境判断:

import { Injectable } from '@angular/core';
import { ProtectedRoutesGuard, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@spartacus/core';
import { SmartEditLauncherService } from '@spartacus/smartedit/root';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

@Injectable({
  providedIn: 'root'
})
export class CustomProtectedRoutesGuard extends ProtectedRoutesGuard {
  constructor(
    protected smartEditLauncherService: SmartEditLauncherService,
    // 按项目实际配置补全原生ProtectedRoutesGuard需要的其他依赖
  ) {
    // 调用父类构造函数,传入对应依赖
    super(/* 传入原生守卫要求的参数 */);
  }

  canActivate(
    route: ActivatedRouteSnapshot,
    state: RouterStateSnapshot
  ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
    return this.smartEditLauncherService.isLaunchInSmartEdit().pipe(
      map(isInSmartEdit => {
        // SmartEdit环境直接放行,不触发登录跳转
        if (isInSmartEdit) {
          return true;
        }
        // 普通环境走原生受保护路由判断逻辑
        return super.canActivate(route, state) as boolean | UrlTree;
      })
    )
  }
}

步骤3:根模块替换原生守卫的服务提供者

import { NgModule } from '@angular/core';
import { ProtectedRoutesGuard } from '@spartacus/core';
import { CustomProtectedRoutesGuard } from './guards/custom-protected-routes.guard';

@NgModule({
  providers: [
    {
      provide: ProtectedRoutesGuard,
      useClass: CustomProtectedRoutesGuard
    }
  ]
})
export class AppModule {}

补充说明:如果你的项目开启的是全局早登录(所有路由默认受保护),不需要自定义Guard也可以实现需求,直接在earlyLogin配置的provider中加入SmartEdit环境判断,动态将earlyLogin.enabled设置为false即可。


内容的提问来源于stack exchange,提问作者Krzysztof Platis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 10:45:00