source

ScopeKey가 nuxt.js 인증 모듈에서 작동하지 않음

goodcode 2022. 9. 23. 00:12
반응형

ScopeKey가 nuxt.js 인증 모듈에서 작동하지 않음

최근에 Nuxtjs 사용법을 배우기 시작했는데 Auth 모듈 사용법을 배우다가 문제가 생겼습니다.

로그인 할 수 있고 계정의 범위를 확인하고 싶습니다만, 「Auth」의 「scopeKey」속성을 사용하고 있습니다.백엔드에서 데이터베이스로부터 "scope"를 가져오면 "user" 또는 "admin" 중 하나입니다.

범위를 설정하려고 했습니다.

scopeKey: 'scope'

그러나 이 범위를 확인할 때 "정의되지 않음"/"null"로 표시됩니다.

this.$auth.hasScope('admin') / this.$auth.hasScope('user')

또는 "이것"입니다.$auth.hasScope(admin)"가 "scopeKey"를 로 설정하면 빈 값을 반환합니다.

scopeKey: 'data.scope'

또는

scopeKey: 'user.scope'

인증 전략은 다음과 같습니다.

auth: {
    strategies: {
      local: {
        scopeKey: 'scope',
        endpoints: {
          login: {
            url: 'api/auth/login',
            method: 'post',
            propertyName: 'token',
          },
          logout: {
            url: 'api/auth/logout',
            method: 'get'
          },
          user: {
            url: 'api/me',
            method: 'get',
            propertyName: data
          }
        }
      }
    },
    redirect: {
      login: '/auth/login',
      logout: '/',
      callback: '/auth/login',
      home: '/dash/'
    }
  }

다음은 로그인 시 인증 모듈이 읽는 json의 예입니다.

"data": {
        "id": 2,
        "name": "test1",
        "email": "test@test.com",
        "email_verified_at": null,
        "scope": "admin",
        "created_at": "2019-08-01 13:11:49",
        "updated_at": "2019-08-01 13:11:49"
    },

프런트 엔드 페이지의 스코프 값에 액세스 할 수 있습니다.

$auth.user.scope

또는 을 사용하여

$auth.$state.user.scope

그러나 "auth" 속성/전략을 설정하면서 어떻게 nuxt.config.js 파일의 "scopeKey" 속성에 "scope"를 지정할 수 있습니까?

편집:

auth 오브젝트 내부로 이동하거나 속성을 삭제하려고 시도했지만 여전히 false가 발생합니다.$auth.hasScope('admin')그리고.$auth.hasScope('user')즉,scopeKey아직 미정의인데 왜 그랬는지 모르겠어요

scopeKey는 기본적으로 'scope'입니다.다시 설정할 필요가 없습니다.

저는 서버 측 변경을 통해 작업을 수행할 수 있었습니다.

문자열 값을 범위에 넣어도 동작하지 않는다.

$data['scope'] = "admin";

근데 어레이로 바꾸니까$auth.hasScope('admin')동작하다

$data['scope'] = array("admin", "test");

도움이 됐으면 좋겠다.

scopeKey: 'scope'내부에 배치해서는 안 됩니다.strategies물건.

에 직접 장착합니다.auth물건.

디폴트 설정을 참조해 주세요.

P.S. 이 속성을 삭제할 수도 있습니다.authconfig 오브젝트, 이유'scope'의 디폴트값입니다.scopeKey.

어떻게든hasScope()저도 동작하지 않기 때문에 사용자 오브젝트를 직접 확인했습니다.또한 응답에 토큰이 있습니다.응답에 사용자가 관리자인지 다른 사용자인지를 알려주는 유형 변수가 있습니다.

이것을 미들웨어에 추가하다

export default function ({ $auth, redirect }) {

    if (!$auth.loggedIn) {
        return redirect('/')
    }
    if ($auth.user.type != 'Super Admin') {  // Super Admin or whatever the user you want to check
        return redirect('/')
    }
}

언급URL : https://stackoverflow.com/questions/57341292/scopekey-doesnt-work-in-nuxt-js-auth-module

반응형