You are not allowed to perform this action in Admin dashboard

default discord avatar
9 months ago

I'm getting below issue when I am creating CRUD operation on any collection in admin dashboard.

"You are not allowed to perform this action" .

It works locally. But not working in server

  • discord user avatar
    Payload Team
    9 months ago

    I'm guessing the user is not being recognized and that can happen for a few reasons.

    It coudl be that your app is using an nginx proxy. There is a setting for this


    . You can find more about that here:

    It can also be an issue with CSRF. Can you see in your browser network connection if you have any more information about the failing request?

  • default discord avatar
    9 months ago

    I reproduced this issue following Northflank tutorial here:

    In my payload.config.ts file I have set the following

      rateLimit: {
        trustProxy: true,

    But I still get the 403 Forbitten error on all admin dashboard actions.

    My network tab shows the following on the failing request.

    Response headers:

    access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization, Content-Encoding, x-apollo-tracing
    access-control-allow-methods: PUT, PATCH, POST, GET, DELETE, OPTIONS
    content-language: en
    content-length: 70
    content-type: application/json; charset=utf-8
    date: Tue, 20 Dec 2022 09:39:32 GMT
    etag: W/"46-bd4yfQXS/voMs5vNOs0ci7W7Q7k"
    server: istio-envoy
    vary: X-HTTP-Method-Override, Accept-Encoding
    x-envoy-upstream-service-time: 8
    x-powered-by: Express
    x-ratelimit-limit: 500
    x-ratelimit-remaining: 487 <-- this looks OK right?
    x-ratelimit-reset: 1671529179

    Response body:

    {"errors":[{"message":"You are not allowed to perform this action."}]}

    I see the payload-token in the request headers inside the cookie

    SOLVED ✅

    After following the tip about CSRF and this tutorial, the problem was gone.

    In short, you need to whitelist all your domains where the app is running in the payload.conf.ts file by adding the domains into the csrf array as follows:

      csrf: [
        '', // staging
        '', // production
  • default discord avatar
    3 months ago

    You saved my day!

Open the post
Continue the discussion in Discord
Like what we're doing?
Star us on GitHub!


Connect with the Payload Community on Discord



Can't find what you're looking for?

Get help straight from the Payload team with an Enterprise License.