programing

Vue Router에서 발송된 후 저장소 데이터를 올바르게 업데이트하지 마십시오.

prostudy 2022. 4. 2. 08:56
반응형

Vue Router에서 발송된 후 저장소 데이터를 올바르게 업데이트하지 마십시오.

나는 부에로터(vue-roouter)에서 보호되는 몇몇 경로를 가지고 있다. 이것은 부에로터(vue-roouter)의 경로의 메타 속성을 통해서 한다.

인덱스 경로를 로드할 때, 즉 모든 레코드에 편집 버튼이 표시되는데, 그 순간 이 권한이 있기 때문에 해당 사용자를 업데이트하면 관리자와 함께 다른 패널로 가서 해당 권한을 제거한다.이제 일반 사용자에게 가서 내 테이블의 편집 버튼을 넘겨주면, 나는 그 순간 그 권한이 없기 때문에 403번 경로로 보내야 하지만, 그것은 내가 권한을 업데이트하는 다른 경로로 가는 다음 네비게이션으로 나를 보내야 한다.이 문제를 어떻게 해결하지?

router.beforeEach((to, from, next) => {
    store.dispatch('ME'); // get permissions before navigate route
    if (to.matched.some(record => record.meta.permission_name)) {
        // I check if the route permits, otherwise send to route 403
        if(!store.getters.containsPermission(to.meta.permission_name)){
            next({name : '403'})
        }
        else{
            next()
        }
    }
    else{
        next()
    }
})

권한은 Laravel 및 Laravel 권한을 사용하는 백엔드의 데이터베이스에 있으며, 다른 관리자로부터 해당 사용자에 대한 권한을 수정하고store.dispatch('ME');메타 평가를 하기 전에 디스패치를 호출하면 제대로 도착한다고 생각했던 새로운 허락을 얻는다.next({'403'});

나는 네가 나를 이해해주길 바라, 그렇지 않다면, 주저하지 말고 의견을 말해.

상점에 권한을 두지 마십시오.나나 나 같은 교활한 사람은 내가 원할 때마다 당신의 지원서에 대한 모든 권한을 넣을 수 있다.대신, 모든 경로가 변경되기 전에 API로 쿼리하십시오.

router.beforeEach(async (to, from, next) => {
  try {
    await api.get('permissions', { params: permissions: to.matched.some((record) => record.meta.permission_name }})

    next()
  } catch (e) {
    next({ name: '403 })
  }
})

서버 쪽만 처리하면 돼

참조URL: https://stackoverflow.com/questions/56420370/why-do-not-you-update-the-store-data-correctly-after-a-dispatch-from-vue-router

반응형