programing

부엑스의 라라벨 포르티피요배열에서 문자열로 변환 오류입니다.요새화서비스 프로바이더php 행 40.무슨 일이야?

bestcode 2022. 8. 28. 09:40
반응형

부엑스의 라라벨 포르티피요배열에서 문자열로 변환 오류입니다.요새화서비스 프로바이더php 행 40.무슨 일이야?

나는 무슨 일이 일어나고 있는지 알기 위해 거의 하루를 보냈다.서버에 이메일과 비밀번호 값을 전송해야 하는 로그인 vue 컴포넌트가 있습니다.그러나 Login 컨트롤러는 Fortify 컨트롤러에 내장되어 있기 때문에 에러 500과 에러 422가 표시되는 이유를 알 수 없습니다(같은 시간이 아니라 다른 시간을 얻을 수 있지만 다양한 실험을 통해 얻을 수 있는 유일한 결과입니다).vuex 스토리지 방법 및 모듈용 js 파일을 만들고 모듈 및 이 모듈에서 axios.post을 사용했습니다.로그인 vue 컴포넌트에 $store.displays가 포함되어 있습니다.

여기 코드의 중요한 부분이 있습니다.

Login.vue

            <template>
            <form>
                <div class="input-group form-group">
                    <div class="input-group-prepend">
                        <span class="input-group-text"><i class="fas fa-user"></i></span>
                    </div>
                    <label>
                        <input type="email" v-model="email" name="email" class="form-control" placeholder="email">
                    </label>
                </div>
                <div class="input-group form-group">
                    <div class="input-group-prepend">
                        <span class="input-group-text"><i class="fas fa-key"></i></span>
                    </div>
                    <label>
                        <input type="password" v-model = "password" name="password" class="form-control" placeholder="password">
                    </label>
                </div>
                <div class="row align-items-center remember">
                    <label>
                        <input type="checkbox">
                    </label>Remember Me
                </div>
                <div class="form-group">
                    <input type="submit" v-on:click.prevent="login" value="Login" class="btn float-right login_btn">
                </div>
            </form>
            </template>

<script>

export default {
    name: "Login",
    data: () => {
        return {
            email: '',
            password: ''
        }
    },

    methods:{
        login(){
            this.$store.dispatch('users/login',{}, {email: this.email, password: this.password})
        },
    },
}

</script>

js/store/syslog/users.displaces.

export default {
    namespaced: true,
    state: {
        user:{}
    },
    getters: {
        user(state) {
            return state.user
        }
    },
    mutations: {
        user(state, user) {
            state.comment = user
        }
    },
    actions:
        {
            login(emailData,passwordData) {
                axios.post('/login',{
                    'email': emailData, 'password': passwordData}
                ).then(response => {
                    if (response.status === 201) {
                        console.log('login')
                    } else {
                        console.log(response.data)
                    }
                }).catch(error => {
                    console.log('oops')
                });
            },
        }
}

js/store/index.module

import Vue from 'vue'
import Vuex from 'vuex'
import comments from "./modules/comments";
import users from "./modules/users";

Vue.use(Vuex);

export default new Vuex.Store({
    modules: {
        comments,
        users
    }
})

js/app.module

import './bootstrap'
import Vue from 'vue'
import {router} from './routes/index'
import App from './components/App.vue';
import store from './store/index'

window.Vue = Vue

const app = new Vue({
    el:'#app',
    router,
    store,
    render: h => h(App)
});

js 구문을 올바르게 이해하지 못하거나 데이터를 매개 변수로서 메서드 axios.post() 및 이 메서드에 전달하는 방법에 문제가 있는 것 같습니다.$store.syslogs어쨌든.어떻게 해야 할지 모르겠어요.vues 대신 블레이드를 사용할 때는 로그인 작업이 매우 쉬웠지만 vue js에서는 vuex에 문제가 발생했습니다.

Mozilla 브라우저에서 복사된 오류 중 하나

{
  "message": "Array to string conversion",
  "exception": "ErrorException",
  "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\app\\Providers\\FortifyServiceProvider.php",
  "line": 40,
  "trace": [
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\app\\Providers\\FortifyServiceProvider.php",
      "line": 40,
      "function": "handleError",
      "class": "Illuminate\\Foundation\\Bootstrap\\HandleExceptions",
      "type": "->"
    },
    {
      "function": "App\\Providers\\{closure}",
      "class": "App\\Providers\\FortifyServiceProvider",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Middleware\\ThrottleRequests.php",
      "line": 85,
      "function": "call_user_func"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Middleware\\ThrottleRequests.php",
      "line": 55,
      "function": "handleRequestUsingNamedLimiter",
      "class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
      "line": 167,
      "function": "handle",
      "class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken.php",
      "line": 78,
      "function": "Illuminate\\Pipeline\\{closure}",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
      "line": 167,
      "function": "handle",
      "class": "Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\View\\Middleware\\ShareErrorsFromSession.php",
      "line": 49,
      "function": "Illuminate\\Pipeline\\{closure}",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
      "line": 167,
      "function": "handle",
      "class": "Illuminate\\View\\Middleware\\ShareErrorsFromSession",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Session\\Middleware\\StartSession.php",
      "line": 121,
      "function": "Illuminate\\Pipeline\\{closure}",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Session\\Middleware\\StartSession.php",
      "line": 64,
      "function": "handleStatefulRequest",
      "class": "Illuminate\\Session\\Middleware\\StartSession",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
      "line": 167,
      "function": "handle",
      "class": "Illuminate\\Session\\Middleware\\StartSession",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse.php",
      "line": 37,
      "function": "Illuminate\\Pipeline\\{closure}",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
      "line": 167,
      "function": "handle",
      "class": "Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Cookie\\Middleware\\EncryptCookies.php",
      "line": 67,
      "function": "Illuminate\\Pipeline\\{closure}",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
      "line": 167,
      "function": "handle",
      "class": "Illuminate\\Cookie\\Middleware\\EncryptCookies",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
      "line": 103,
      "function": "Illuminate\\Pipeline\\{closure}",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php",
      "line": 697,
      "function": "then",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php",
      "line": 672,
      "function": "runRouteWithinStack",
      "class": "Illuminate\\Routing\\Router",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php",
      "line": 636,
      "function": "runRoute",
      "class": "Illuminate\\Routing\\Router",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php",
      "line": 625,
      "function": "dispatchToRoute",
      "class": "Illuminate\\Routing\\Router",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php",
      "line": 166,
      "function": "dispatch",
      "class": "Illuminate\\Routing\\Router",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
      "line": 128,
      "function": "Illuminate\\Foundation\\Http\\{closure}",
      "class": "Illuminate\\Foundation\\Http\\Kernel",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest.php",
      "line": 21,
      "function": "Illuminate\\Pipeline\\{closure}",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\TrimStrings.php",
      "line": 40,
      "function": "handle",
      "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
      "line": 167,
      "function": "handle",
      "class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize.php",
      "line": 27,
      "function": "Illuminate\\Pipeline\\{closure}",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
      "line": 167,
      "function": "handle",
      "class": "Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance.php",
      "line": 86,
      "function": "Illuminate\\Pipeline\\{closure}",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
      "line": 167,
      "function": "handle",
      "class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\fruitcake\\laravel-cors\\src\\HandleCors.php",
      "line": 38,
      "function": "Illuminate\\Pipeline\\{closure}",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
      "line": 167,
      "function": "handle",
      "class": "Fruitcake\\Cors\\HandleCors",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Http\\Middleware\\TrustProxies.php",
      "line": 39,
      "function": "Illuminate\\Pipeline\\{closure}",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
      "line": 167,
      "function": "handle",
      "class": "Illuminate\\Http\\Middleware\\TrustProxies",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php",
      "line": 103,
      "function": "Illuminate\\Pipeline\\{closure}",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php",
      "line": 141,
      "function": "then",
      "class": "Illuminate\\Pipeline\\Pipeline",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php",
      "line": 110,
      "function": "sendRequestThroughRouter",
      "class": "Illuminate\\Foundation\\Http\\Kernel",
      "type": "->"
    },
    {
      "file": "C:\\xampp\\htdocs\\dashboard\\test\\social_network\\public\\index.php",
      "line": 52,
      "function": "handle",
      "class": "Illuminate\\Foundation\\Http\\Kernel",
      "type": "->"
    }
  ]
}

업데이트:

여기 포트파이의 암호가 있습니다.서비스 프로바이더php

<?php

namespace App\Providers;

use App\Actions\Fortify\CreateNewUser;
use App\Actions\Fortify\ResetUserPassword;
use App\Actions\Fortify\UpdateUserPassword;
use App\Actions\Fortify\UpdateUserProfileInformation;
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\ServiceProvider;
use Laravel\Fortify\Fortify;

class FortifyServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Fortify::createUsersUsing(CreateNewUser::class);
        Fortify::updateUserProfileInformationUsing(UpdateUserProfileInformation::class);
        Fortify::updateUserPasswordsUsing(UpdateUserPassword::class);
        Fortify::resetUserPasswordsUsing(ResetUserPassword::class);

        RateLimiter::for('login', function (Request $request) {
            return Limit::perMinute(10)->by($request->email.$request->ip());
        });

        RateLimiter::for('two-factor', function (Request $request) {
            return Limit::perMinute(5)->by($request->session()->get('login.id'));
        });

        Fortify::loginView(function () {
            return view('auth.login');
        });

        Fortify::registerView(function () {
            return view('auth.register');
        });

        Fortify::twoFactorChallengeView(function () {
            return view('auth.two-factor-challenge');
        });

        Fortify::verifyEmailView(function () {
            return view('auth.verify-email');
        });
    }
}

TL;DR 업데이트login실행 예정:

action(context, payload) {
    axios.post('/login', {
            email: payload.email, 
            password: payload.password
        }
    )
    .... // The rest of the code.
}

또는, 이 명령어느끼고 있는payload데이터 객체로서axios:

axios.post('/login', payload)
    .then(...)
    .catch(...)

그럼 다음 업데이트dispatch call by removing the empty {}'은(는) 두 번째 인수입니다.

this.$store.dispatch('users/login', {email: this.email, password: this.password})

그 문제는 분명 당신의 문제일 겁니다login액션이라고 부르는 방법과 인수를 사용하는 방법 모두입니다.

Vuex를 사용한 작업에는context첫 번째 매개 변수(와 같은 것을 가진 개체)로서state그리고.commit다음으로 payload(payload에 전달할 데이터)를 취득하는 옵션의 두 번째 파라미터입니다.
dispatchmethod는 액션의 이름을 첫 번째 인수로, 옵션의 payload를 두 번째 인수로 사용합니다.

따라서 기본적으로 콘텍스트오브젝트를 이메일 속성으로 전송하면 서버에 도달하면 어레이로 변환되므로 오류가 발생합니다.

언급URL : https://stackoverflow.com/questions/70136237/laravel-fortify-vuex-array-to-string-conversion-error-fortifyserviceprovider

반응형