Vue Router(히스토리 모드) 및 Webpack 외부 리디렉션 처리
P粉681400307
P粉681400307 2023-08-28 12:13:17
0
1
536

SO 커뮤니티

기존 Vue 2 애플리케이션에 외부 인증을 추가하려고 합니다. 내가 겪고 있는 문제는 외부 IdP가 /redirect 경로를 사용하여 Vue 애플리케이션으로 다시 리디렉션할 때 Vue Router가 업데이트된 경로를 존중하지 않고 올바른 구성 요소로 경로를 지정하는 것 같다는 것입니다. . 즉, Vue Router는 /redirect 구성요소 대신 / 구성요소로 라우팅합니다.

Vue Router는 mode: 'history'를 설정하고 Webpack은 historyApiFallback: true를 설정합니다.

현재 동작:

<올>
  • 사용자가 https://localhost:8080/로 이동하면 Login
  • 사용자가 자신의 ID를 입력하면 외부 IdP로 리디렉션됩니다.
  • 인증에 성공하면 IdP는 지정된 리디렉션 URL로 돌아갑니다: https://localhost:8080/redirect
  • 기록 모드로 인해 Webpack은 브라우저를 /로 보내고, 이는 Login 구성요소를 반환합니다.
  • Login 구성 요소에서 mounted() 후크 확인if (window.location.pathname === '/redirect') 라우터 .push({ 경로: '/redirect' });
  • Vue 라우터는 /redirect 및 해당 구성요소 대신 / 경로로 이동합니다.
  • 技术细节:

    Vue - 2.5.15

    루로由器视图 - 3.0.0

    웹팩 - 4.17.1

    웹팩 开发服务器 - 3.1.4

    webpack.dev.js

    devServer: { HistoryApiFallback: true,

    router.js

    const router = new VueRouter({ 모드: '역사', 경로: [ ... { 경로: '/리디렉션', 구성 요소: 리디렉션, }, { 길: '/', 리디렉션: () => { }, ... router.beforeEach((to, from, next) => { const 사용자 = store.state.user.authorizedUser const toPath = to.path if (toPath === '/redirect') 반환 });

    App.vue

    new Vue({ 엘: '#로그인', 렌더링: h => h(로그인), 가게, })

    登录.vue

    mounted() { if (window.location.pathname === '/redirect') router.push({ 경로: '/redirect' }); }

    请告诉我是否需要提供任何其他细节或代码。提前感谢您的帮助。

    P粉681400307
    P粉681400307

    모든 응답 (1)
    P粉208469050

    그래서 문제는 최상위 구성 요소Login在路由器启动之前充当交通警察的角色。我不得不编辑Login组件以手动挂载Redirect구성 요소에 있는 것 같습니다.

    이 설정은 권장하지 않습니다.

      최신 다운로드
      더>
      웹 효과
      웹사이트 소스 코드
      웹사이트 자료
      프론트엔드 템플릿
      회사 소개 부인 성명 Sitemap
      PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!