2017-09-09 1 views
1

내 맞춤 요청 클래스를 내 메소드 중 하나에서 호출 할 수없는 이유를 파악하려고합니다.맞춤 요청 클래스가 존재하지 않지만 실제로 있습니까?

나는 내 수업을 php artisan make:request ValidateUserSecretRequest으로 만들었습니다.

이로 인해 내 사용자 지정 요청 파일이 예상대로 Http/Requests 폴더에 만들어졌습니다.

그러나 내 Auth\LoginController.php 내에서 호출, 나는 Class App\Http\Controllers\Auth\ValidateUserSecretRequest does not exist을받습니다. 불필요한 방법 제거와 여기

는 컨트롤러의 :

namespace App\Http\Controllers\Auth; 

use Cache; 
use Illuminate\Http\Request; 
use Illuminate\Support\Facades\Auth; 
use Illuminate\Contracts\Auth\Authenticatable; 
use Illuminate\Foundation\Auth\AuthenticatesUsers; 

use App\Http\Requests\ValidateSecretUserRequest; 
use App\Http\Controllers\Controller; 

class LoginController extends Controller 
{ 

    use AuthenticatesUsers; 

    public function __construct() 
    { 
     $this->middleware('guest')->except('logout'); 
    } 

public function postValidateToken(ValidateUserSecretRequest $request) 
{ 
    // get user id and create cache key 
    $userId = $request->session()->pull('2fa:user:id'); 
    $key = $userId . ':' . $request->totp; 

    // use cache to store token to blacklist 
    Cache::add($key, true, 4); 

    // login and redirect user 
    Auth::loginUsingId($userId); 

    return redirect()->intended($this->redirectTo); 
} 

그리고 내 사용자 지정 요청 클래스 : 나는 시도했다

namespace App\Http\Requests; 

use Cache; 
use Crypt; 
use Google2FA; 
use App\User; 
use App\Http\Requests\Request; 
use Illuminate\Validation\Factory as ValidatonFactory; 
use Illuminate\Foundation\Http\FormRequest; 

class ValidateUserSecretRequest extends FormRequest 
{ 

    /** 
    * 
    * @var \App\User 
    */ 
    private $user; 

    /** 
    * Create a new FormRequest instance. 
    * 
    * @param \Illuminate\Validation\Factory $factory 
    * @return void 
    */ 
    public function __construct(ValidatonFactory $factory) 
    { 

     $factory->extend(
      'valid_token', 
      function ($attribute, $value, $parameters, $validator) { 
       $secret = Crypt::decrypt($this->user->google2fa_secret); 
       return Google2FA::verifyKey($secret, $value); 
      }, 
      'Not a valid token' 
     ); 

     $factory->extend(
      'used_token', 
      function ($attribute, $value, $parameters, $validator) { 
       $key = $this->user->id . ':' . $value; 

       return !Cache::has($key); 
      }, 
      'Cannot reuse token' 
     ); 
    } 

    /** 
    * Determine if the user is authorized to make this request. 
    * 
    * @return bool 
    */ 
    public function authorize() 
    { 
     try { 
      $this->user = User::findOrFail(
       session('2fa:user:id') 
      ); 
     } catch (Exception $exc) { 
      return false; 
     } 

     return true; 
    } 

    /** 
    * Get the validation rules that apply to the request. 
    * 
    * @return array 
    */ 
    public function rules() 
    { 
     return [ 
      'totp' => 'bail|required|digits:6|valid_token|used_token', 
     ]; 
    } 

} 

:

  • 작곡가 덤프 - 자동로드
  • 작곡가 업데이트
  • 긁어 내 머리를 여러 번 다른 이름으로 장인과 함께 사용자 지정 요청을 다시
  • , 동일한 문제가

는 도대체 여기 무슨 일이야?

+0

나는 오타가 있다고 생각합니다. 귀하의 컨트롤러에서는'App \ Http \ Requests \ ValidateSecretUserRequest; '라고 쓰여졌습니다. 다른 곳에서는'ValidateUserSecretRequest; –

답변

0

"App \ Http \ Requests \ ValidateSecretUserRequest 사용"이라고 적어 두었습니다. "ValidateUserSecretRequest"클래스를 사용하는 동안 오타가 있습니다.

0

사용 중 오류 App \ Http \ Requests \ ValidateSecretUserRequest; 다시 확인하실 수 있습니다.

0

실제로 존재하지 않으므로 Class App\Http\Controllers\Auth\ValidateUserSecretRequest does not exist이됩니다. 오류의 접두어 App\Http\Controllers\Auth\은 현재 네임 스페이스를 사용한다는 것을 의미합니다.

보세요 - 올바른 클래스 이름을 쓰려면 UserSecret을 교환해야합니다.

0

클래스 이름이 잘못되었습니다. App\Http\Requests\ValidateSecretUserRequest; 하지만 실제로는 ValidateUserSecretRequest

관련 문제