admin管理员组

文章数量:1278825

Recently i started to learn how to use Nuxtjs and while learning how to use its Auth module i came across a problem.

I'm able to log in and I want to check the scope of the accounts, i tried doing it using the "scopeKey" property of "Auth". From the back end i get the "scope" from the databse and it can either be "user" or "admin".

I have tried to set the scope with

scopeKey: 'scope'

But I get that scope is "undefined"/"null" when checking with

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

or "this.$auth.hasScope(admin)" return an empty value when setting "scopeKey" to

scopeKey: 'data.scope'

or

scopeKey: 'user.scope'

Here is my auth strategy:

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/'
    }
  }

and here it is an example of the json that the auth module reads when i log in:

"data": {
        "id": 2,
        "name": "test1",
        "email": "[email protected]",
        "email_verified_at": null,
        "scope": "admin",
        "created_at": "2019-08-01 13:11:49",
        "updated_at": "2019-08-01 13:11:49"
    },

I can access the scope value on the front end page with

$auth.user.scope

or with

$auth.$state.user.scope

But how can I give the "scope" to the "scopeKey" property in the nuxt.config.js file while setting the "auth" properties/strategy?

edit:

I have tried moving it inside the auth object or deleting the property and I still get false on $auth.hasScope('admin') and $auth.hasScope('user') which means scopeKey is still undefined and i'm not sure why.

Recently i started to learn how to use Nuxtjs and while learning how to use its Auth module i came across a problem.

I'm able to log in and I want to check the scope of the accounts, i tried doing it using the "scopeKey" property of "Auth". From the back end i get the "scope" from the databse and it can either be "user" or "admin".

I have tried to set the scope with

scopeKey: 'scope'

But I get that scope is "undefined"/"null" when checking with

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

or "this.$auth.hasScope(admin)" return an empty value when setting "scopeKey" to

scopeKey: 'data.scope'

or

scopeKey: 'user.scope'

Here is my auth strategy:

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/'
    }
  }

and here it is an example of the json that the auth module reads when i log in:

"data": {
        "id": 2,
        "name": "test1",
        "email": "[email protected]",
        "email_verified_at": null,
        "scope": "admin",
        "created_at": "2019-08-01 13:11:49",
        "updated_at": "2019-08-01 13:11:49"
    },

I can access the scope value on the front end page with

$auth.user.scope

or with

$auth.$state.user.scope

But how can I give the "scope" to the "scopeKey" property in the nuxt.config.js file while setting the "auth" properties/strategy?

edit:

I have tried moving it inside the auth object or deleting the property and I still get false on $auth.hasScope('admin') and $auth.hasScope('user') which means scopeKey is still undefined and i'm not sure why.

Share Improve this question edited Aug 6, 2019 at 9:19 Paolo95 asked Aug 3, 2019 at 18:56 Paolo95Paolo95 332 silver badges7 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 8

The scopeKey is 'scope' by default. You don't need to set it again.

For me it worked by doing server side change.

When I put string value in scope, it does not work

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

But when I changed it to array, $auth.hasScope('admin') works;

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

Hope it helps.

scopeKey: 'scope' should not be placed inside strategies object.

Put it directly in the auth object.

Take a look at default config.

P.S. You can even delete this property from your auth config object, because 'scope' is default value for scopeKey.

Somehow hasScope() is not working for me too, so I directly checked the user object, I also has token in my response. I am having a type variable in my response that tells me if the user is admin or someone else.

add this into your middleware

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('/')
    }
}

本文标签: javascriptScopeKey doesn39t work in nuxtjs auth moduleStack Overflow