suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Die Laravel-Formularvalidierung zeigt direkt die verbotene Lösung an?

// App\Http\Requests\LoginRequest

<?

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class LoginRequest extends FormRequest
{

    public function authorize()
    {
        return false;
    }


    public function rules()
    {
        return [
            'username' => [
                'required',
            ]
        ];
    }
}
// App\Http\Controllers\Admin
<?php


namespace App\Http\Controllers\Admin;
use App\Http\Requests\LoginRequest;
use Illuminate\Cache\RateLimiter;


/**
 * Class Auth
 * @package App\Http\Controllers\Admin
 */
class Auth extends BaseController
{

    public function login()
    {
        return view('admin.login');
    }

    public function dologin(LoginRequest $request)
    {
        dd($request->fails());

        $rl = app(RateLimiter::class);
        $res = $rl->tooManyAttempts($this->getFailKey($request),5,3);
        if ($res)
            return redirect()->back()->withErrors(['errors'=>'3分钟内错误超过5次,请稍后重试']);
        $rl->hit($this->getFailKey($request));
    }

    private function getFailKey(Request $request)
    {
        return $request->input('username').':'.$request->ip();
    }
}

Der Beitrag wird direkt nach der Anmeldung als „Verboten“ angezeigt. Warum?

Update Das Problem wurde behoben.

authorize应该返回true。返回falseEs wird ein Verbotenes geben. Aber hier kommt das Problem. Ich möchte die Logik selbst handhaben, wenn die Authentifizierung falsch ist. Was zu tun?

过去多啦不再A梦过去多啦不再A梦2807 Tage vor506

Antworte allen(1)Ich werde antworten

  • 大家讲道理

    大家讲道理2017-05-16 16:55:34

    重写基类的如下 方法:

        /**
         * Get the response for a forbidden operation.
         *
         * @return \Illuminate\Http\Response
         */
        public function forbiddenResponse()
        {
            return new Response('Forbidden', 403);
        }
        

    在你的 LoginRequest 下按照自己的逻辑重写该方法。

    Antwort
    0
  • StornierenAntwort