Heim Backend-Entwicklung PHP-Tutorial Laravel 5 Basics (Zwölf) – Zertifizierung

Laravel 5 Basics (Zwölf) – Zertifizierung

Aug 08, 2016 am 09:26 AM
auth middleware request return

Laravel verfügt bereits über ein Benutzerauthentifizierungssystem. Werfen wir einen Blick auf routes.php. Falls gelöscht, fügen Sie hinzu:

<code>Route::controllers([
    'auth' => 'Auth\AuthController',
    'password' => 'Auth\PasswordController'
]);</code>
Nach dem Login kopieren

Sie können php artisan route:list verwenden, um es auszuprobieren. Besuchen Sie /auth/login im Browser und Sie sehen die Anmeldeoberfläche. Am besten kommentieren Sie die Dinge zu Google in der Systemvoreinstellung aus app.blade.php, sonst werden Sie verrückt.

Sie können sich registrieren, anmelden oder sogar das Passwort vergessen.

Die eigentliche Registrierung eines Benutzers ist nach der Übermittlung fehlgeschlagen, aber larave ist automatisch zu /home gesprungen. Mit tinker können Sie sehen, ob der Benutzer erstellt wurde.

verwendet tatsächlich AuthAuthController innerhalb von trait. Was ist ein Triat? Nun, PHP unterstützt nur die Einzelvererbung und Merkmale wurden in PHP5.4 hinzugefügt. Ein Merkmal ist eigentlich eine Kapselung einer Reihe von Methoden, und Sie können es in eine andere Klasse einbinden. Wie bei einer abstrakten Klasse können Sie sie nicht direkt instanziieren.

Es gibt einen Verweis auf ein Merkmal in AuthAuthController:

<code>use AuthenticatesAndRegistersUsers;</code>
Nach dem Login kopieren

Lass uns ihn finden und sehen, wie er nach der Registrierung springt. Er verbirgt es ziemlich tief, in vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesAndregistersUsers.php, wow.

<code>	public function redirectPath()
	{
		if (property_exists($this, 'redirectPath'))
		{
			return $this->redirectPath;
		}
        
        //如果用户设置了 redirectTo 属性,则跳转到用户设置的属性,否则到home
		return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home';
	}
</code>
Nach dem Login kopieren

OK, wir haben es verstanden. Legen Sie einfach das Attribut redirectTo fest, um den Sprung nach der Registrierung anzupassen. Wir haben in AuthAuthContotroller geändert:

<code> protected $redirectTo = 'articles';</code>
Nach dem Login kopieren

Lassen Sie uns zuerst /auth/logout verwenden, um sicherzustellen, dass wir den Vorgang beenden. Haben Sie keine Angst, wenn etwas schief geht, wir haben keine Standard-Startseite. Besuchen Sie uns noch einmal: auth/register Erstellen Sie einen neuen Benutzer, dieses Mal sollte es in Ordnung sein .

Melden Sie sich erneut ab und melden Sie sich dann mit der Anmeldung an.

Jetzt können wir die vorübergehend eingestellten ausgeblendeten Felder in form_partial löschen und den Controller ändern:

<code>    public function store(Requests\ArticleRequest $request) {
        //你可以这样
        //$request = $request->all();
        //$request['user_id'] = Auth::id();

        //更简单的方法
        $article = Article::create($request->all());
        //laravel 自动完成外键关联
        Auth::user()->articles()->save($article);

        return redirect('articles');
    }</code>
Nach dem Login kopieren

Fügen Sie einen Artikel hinzu und verwenden Sie tinker, um ihn anzusehen.

Middleware

Natürlich möchten wir nicht, dass jemand Artikel veröffentlichen kann, zumindest nicht, wenn er sich einloggt. Wir fügen Schutz im Controller hinzu:

<code>    public function create() {
        if (Auth::guest()) {
            return redirect('articles');
        }
        return view('articles.create');
    }</code>
Nach dem Login kopieren

Der obige Code kann funktionieren, aber es gibt ein Problem, das wir in jeder Methode durchführen müssen, die geschützt werden muss. Das ist zu dumm.

Middleware kann als Verarbeitungspipeline verstanden werden. Die Middleware verarbeitet zu einem bestimmten Zeitpunkt in der Pipeline. Dieser Moment kann eine Anfrage oder eine Antwort sein. Abhängig von den Verarbeitungsregeln der Middleware kann die Anfrage umgeleitet oder weitergeleitet werden.

enthält drei Middlewares in app/http/middleware. Sie können anhand ihrer Namen erkennen, dass Closure $next die nächste Middleware darstellt.

Registrieren Sie die Middleware in app/http/kernel.php. Der Abschnitt $middleware deklariert Middleware, die das gesamte HTTP verarbeitet, $routeMiddleware verarbeitet nur Routing, und Sie müssen die Verwendung einer oder mehrerer dieser Middlewares explizit deklarieren.

Angenommen, wir möchten das gesamte ArticlesController schützen, fügen wir Middleware direkt im Konstruktor hinzu:

<code>    public function __construct() {
        $this->middleware('auth');
    }</code>
Nach dem Login kopieren

Jede Methode ist jetzt geschützt.

Aber wir möchten wahrscheinlich nicht, dass der gesamte Controller geschützt ist. Was ist, wenn es nur eine oder zwei seiner Methoden sind? Wir können so damit umgehen:

<code>    public function __construct() {
        $this->middleware('auth', ['only' => 'create']);
        //当然可以反过来
        //$this->middleware('auth', ['except' => 'index']);
    }</code>
Nach dem Login kopieren

Wir müssen keine Middleware im Konstruktor des Controllers einführen, wir können sie direkt in der Route deklarieren:

<code>Route::get('about', ['middleware' => 'auth', 'uses' => 'PagesController@about']);</code>
Nach dem Login kopieren

Die in kernel.php bereitgestellte System-Middleware, wie z. B. 'IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode', ermöglicht es uns, in den Wartungsmodus zu wechseln. Das System ist beispielsweise online, muss jetzt aber für die Verarbeitung vorübergehend heruntergefahren werden. Wir können es auf der Befehlszeile verarbeiten. Sehen Sie sich diese Middleware in Aktion an:

<code>php artisan down</code>
Nach dem Login kopieren

Besuchen Sie die Website und Sie können sehen, dass jede URL-Anfrage sofort zurückgegeben wird. Website online:

<code>php artisan up</code>
Nach dem Login kopieren

Lassen Sie uns unsere eigene Middleware erstellen:

<code> php artisan make:middleware Demo</code>
Nach dem Login kopieren

Dann fügen Sie den Code hinzu:

<code>	public function handle($request, Closure $next)
	{
        //如果请求中含有 foo,我们就回到控制器首页
        if ($request->has('foo')) {
            return redirect('articles');
        }

		return $next($request);
	}</code>
Nach dem Login kopieren

Wenn Sie Middleware für alle Anfragen verwenden möchten, müssen Sie diese in kernel.php in $middleware registrieren:

<code>	protected $middleware = [
		...
		'App\Http\Middleware\Demo',

	];</code>
Nach dem Login kopieren

Jetzt können wir das testen. Nehmen wir an, wir besuchen /articles/create?foo=bar und werden zur Startseite weitergeleitet.

Lassen Sie uns diese Anzeige-Middleware loswerden und eine Middleware erstellen, die tatsächlich nützlich ist. Angenommen, wir möchten eine Seite schützen. Diese Seite muss für Administratoren zugänglich sein.

<code>php artisan make:middleware RedirectIfNotAManager</code>
Nach dem Login kopieren

Fügen wir den Verarbeitungscode hinzu:

<code>	public function handle($request, Closure $next)
	{
        if (!$request->user() || !$request->user()->isATeamManager()) {
            return redirect('articles');
        }

		return $next($request);
	}</code>
Nach dem Login kopieren

Ändern wir unser Modell:

<code>    public function isATeamManager() {
        return false;
    }</code>
Nach dem Login kopieren

Der Einfachheit halber geben wir false direkt zurück. Dieses Mal platzieren wir die Middleware in kernel.php in $routeMiddleware .

<code>	protected $routeMiddleware = [
		...
		'manager' => 'App\Http\Middleware\RedirectIfNotAManager',
	];</code>
Nach dem Login kopieren

Lassen Sie uns eine Testroute erstellen, um es zu testen:

<code>Route::get('foo', ['middleware' => 'manager', function() {
    return 'This page may only be viewed by manager';
}]);</code>
Nach dem Login kopieren

Der Gastidentitätszugriff oder der Login-Identitätszugriff kehren zur Startseite zurück. Wenn Sie jedoch isATeamManager() so ändern, dass true zurückgegeben wird, kann der Login-Identitätszugriff die zurückgegebenen Informationen sehen.

Das Obige hat die Grundlagen der Laravel 5 (Twelve)-Zertifizierung vorgestellt, einschließlich einiger Aspekte davon. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1658
14
PHP-Tutorial
1257
29
C#-Tutorial
1231
24
Detaillierte Erläuterung der Verwendung von Return in der C-Sprache Detaillierte Erläuterung der Verwendung von Return in der C-Sprache Oct 07, 2023 am 10:58 AM

Die Verwendung von return in der C-Sprache ist: 1. Für Funktionen, deren Rückgabewerttyp ungültig ist, können Sie die Rückgabeanweisung verwenden, um die Ausführung der Funktion vorzeitig zu beenden. 2. Für Funktionen, deren Rückgabewerttyp nicht ungültig ist, ist die Funktion von Die Return-Anweisung dient dazu, die Ausführung der Funktion zu beenden. 3. Beenden Sie die Ausführung der Funktion vorzeitig wenn die Funktion keinen Wert zurückgibt.

Was bedeutet PHP-Anfrage? Was bedeutet PHP-Anfrage? Jul 07, 2021 pm 01:49 PM

Die chinesische Bedeutung von request ist „request“. Es ist eine globale Variable in PHP und ein Array, das „$_POST“, „$_GET“ und „$_COOKIE“ enthält. Die Variable „$_REQUEST“ kann per POST oder GET übermittelte Daten und COOKIE-Informationen abrufen.

Wie ist die Ausführungsreihenfolge von Return- und Final-Anweisungen in Java? Wie ist die Ausführungsreihenfolge von Return- und Final-Anweisungen in Java? Apr 25, 2023 pm 07:55 PM

Quellcode: publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}}# Ausgabe Die Ausgabe des obigen Codes kann einfach zu dem Schluss kommen: return wird ausgeführt, bevor wir uns schließlich ansehen, was auf der Bytecode-Ebene passiert. Im Folgenden wird ein Teil des Bytecodes der Methode case1 abgefangen und mit dem Quellcode verglichen, um die Bedeutung jeder Anweisung darin zu kommentieren

So verwenden Sie die Funktion urllib.request.urlopen() zum Senden einer GET-Anfrage in Python 3.x So verwenden Sie die Funktion urllib.request.urlopen() zum Senden einer GET-Anfrage in Python 3.x Jul 30, 2023 am 11:28 AM

So verwenden Sie die Funktion urllib.request.urlopen() in Python3.x, um eine GET-Anfrage zu senden. Bei der Netzwerkprogrammierung müssen wir häufig Daten von einem Remote-Server erhalten, indem wir eine HTTP-Anfrage senden. In Python können wir die Funktion urllib.request.urlopen() im Modul urllib verwenden, um eine HTTP-Anfrage zu senden und die vom Server zurückgegebene Antwort zu erhalten. In diesem Artikel wird die Verwendung vorgestellt

Verwendung von Auth0 zur Authentifizierung in der Java-API-Entwicklung Verwendung von Auth0 zur Authentifizierung in der Java-API-Entwicklung Jun 18, 2023 pm 05:30 PM

In der modernen Softwareentwicklung ist die Identitätsauthentifizierung eine sehr wichtige Sicherheitsmaßnahme. Auth0 ist ein Unternehmen, das Identitätsauthentifizierungsdienste anbietet. Es kann Entwicklern dabei helfen, schnell mehrere Identitätsauthentifizierungsmethoden (einschließlich OAuth2, OpenIDConnect usw.) zu implementieren und sichere und zuverlässige Authentifizierungsdienste bereitzustellen. In diesem Artikel stellen wir vor, wie man Auth0 zur Authentifizierung in der JavaAPI-Entwicklung verwendet. Schritt 1: Erstellen Sie ein Auth0-Konto und registrieren Sie die Anwendung. Zuerst müssen wir dies tun

So kapseln Sie den Vue3 Axios-Interceptor in eine Anforderungsdatei So kapseln Sie den Vue3 Axios-Interceptor in eine Anforderungsdatei May 19, 2023 am 11:49 AM

1. Erstellen Sie eine neue Datei namens request.js und importieren Sie Axios: importaxiosfrom'axios'; 2. Erstellen Sie eine Funktion namens request und exportieren Sie sie: Dadurch wird eine Funktion namens request erstellt und exportiert. Richten Sie eine neue Axios-Instanz mit einer Basis-URL ein . Um Timeout-Einstellungen in einer umschlossenen Axios-Instanz hinzuzufügen, können Sie beim Erstellen der Axios-Instanz die Timeout-Option übergeben. exportconstrequest=axios.create({baseURL:'https://example.

Was ist eine Anfrage in PHP? Was ist eine Anfrage in PHP? Jun 01, 2023 am 10:12 AM

Request in PHP ist eine super globale Variable in PHP. Sie wird zum Sammeln von Daten verwendet, die von HTML-Formularen und Parametern in URLs übermittelt werden. Sie kann Daten aus GET- und POST-Anfragen abrufen ein assoziatives Array, wobei die Schlüssel die Namen der Formularfelder und die Werte die Werte der Formularfelder sind. Bei Verwendung der Variablen $_request sollten vom Benutzer eingegebene Daten immer validiert und gefiltert werden, um Sicherheitsprobleme zu vermeiden.

Was ist das Request-Objekt in PHP? Was ist das Request-Objekt in PHP? Feb 27, 2024 pm 09:06 PM

Das Request-Objekt in PHP ist ein Objekt, das zur Verarbeitung von HTTP-Anfragen verwendet wird, die vom Client an den Server gesendet werden. Über das Request-Objekt können wir die Anforderungsinformationen des Clients abrufen, z. B. die Anforderungsmethode, die Anforderungsheaderinformationen, die Anforderungsparameter usw., um die Anforderung zu verarbeiten und zu beantworten. In PHP können Sie globale Variablen wie $_REQUEST, $_GET, $_POST usw. verwenden, um angeforderte Informationen zu erhalten, aber diese Variablen sind keine Objekte, sondern Arrays. Um Anfrageinformationen flexibler und bequemer bearbeiten zu können, können Sie dies tun

See all articles