Die Laravel-Formularvalidierung zeigt direkt die verbotene Lösung an?
过去多啦不再A梦
过去多啦不再A梦 2017-05-16 16:53:34
0
1
479
// 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梦

Antworte allen(1)
大家讲道理

重写基类的如下 方法:

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

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage