私のカスタムリクエストクラスが自分のメソッドの1つで呼び出せない理由を理解しようとしています。カスタムリクエストクラスは存在しませんが、それはありますか?
私のクラスはphp artisan make:request ValidateUserSecretRequest
で作成しました。
これは、期待通りにHttp/Requests
フォルダに自分のカスタム要求ファイルを作成しました。
ただし、Auth\LoginController.php
の中で呼び出されるValidateUserSecretRequest
は、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',
];
}
}
私が試した:
- 作曲ダンプ、自動ロード を
- 作曲家アップデート
- 傷私の頭を複数回、別の名前で職人でカスタム要求を再作成
- 、同じ問題が
は地獄はここで何が起こっていますか?
あなたは誤字があると思います。あなたのコントローラでは 'App \ Http \ Requests \ ValidateSecretUserRequest;'を使って書いていますが、他の場所では 'ValidateUserSecretRequest;'を使っています。 –