Heim  >  Artikel  >  Backend-Entwicklung  >  Laravel5.2 verwendet Captcha, um Bestätigungscodes zu generieren und Anmeldemethoden zu implementieren

Laravel5.2 verwendet Captcha, um Bestätigungscodes zu generieren und Anmeldemethoden zu implementieren

小云云
小云云Original
2018-01-05 10:14:321704Durchsuche

Kürzlich hat mich ein Freund gebeten, bei der Anmeldung mit dem Verifizierungscode von Laravel zu helfen, also habe ich ein wenig recherchiert. In diesem Artikel wird hauptsächlich die Verwendung von Captcha durch Laravel5.2 zum Generieren von Bestätigungscodes vorgestellt (Session Pit). Ich hoffe, dass es allen helfen kann.

Zuallererst besteht keine Notwendigkeit, auf Details zur Installation von Laravel einzugehen. Meine Version ist 5.2.45 (Hinweis: Middleware für Laravel 5.2.6 und höher kann automatisch geladen werden), was sehr wichtig ist.

Nachdem die Installation abgeschlossen ist, müssen Sie Composer verwenden, um Ihr Captcha zu laden. Die spezifische Methode besteht darin, die Zeile „gregwar/captcha“: „1.*“ zum Anforderungsarray in Ihrer Composer.json hinzuzufügen . Verwenden Sie dann cmd im Stammverzeichnis Ihres Projekts, um die Composer-Update-Codezeile auszuführen. In diesem Fall auch dann, wenn die Bibliothek oder Middleware installiert ist. Dann können Sie Ihren Code frei schreiben.

php: (Ich werde unten nicht zu sehr auf das spezifische Routing eingehen, schreiben Sie einfach den Schlüsselcode)

public function captcha($tmp)
{  //生成验证码图片的Builder对象,配置相应属性
  $builder = new CaptchaBuilder;
  //可以设置图片宽高及字体
  $builder->build($width = 100, $height = 40, $font = null);
  //获取验证码的内容
  $phrase = $builder->getPhrase();
  //把内容存入session
  Session::flash('milkcaptcha', $phrase);
  //生成图片
  header("Cache-Control: no-cache, must-revalidate");
  header('Content-Type: image/jpeg');
  $builder->output();
}

Blade-Vorlagenaufruf:

<img src="{{url(&#39;/captcha/1&#39;)}}" alt="" onclick="this.src=&#39;{{url(&#39;/captcha&#39;)}}/&#39;+Math.random()" width="100" height="40" border="0">

Wenn du denkst, dass dies das Ende ist, dann bist du in Wirklichkeit zu yang zu einfach. Bei der Überprüfung werden Sie feststellen, dass alles falsch ist.

Ist es nicht so sauer und erfrischend? Da in Laravel5.2 nicht alle Sitzungen Controller und Methoden übergreifen können, wird die Sitzung standardmäßig neu generiert. Keine Sorge, die nächste Methode ist die Lösung. Derzeit kenne ich zwei Lösungen: Eine davon besteht darin, selbst eine Middleware zu erstellen und alle Sitzungen darin zu speichern. Als Nächstes werde ich eine einfache Methode vorstellen: Fügen Sie in Ihrer laravelappHttpKernel.php den folgenden Code hinzu in der Datei:

\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Cookie\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,

Dann können Sie die Sitzung beruhigt nutzen. Dies ist die Möglichkeit, den Verifizierungscode unten zu überprüfen. Abschließend muss ich mich über die offizielle Dokumentation von Laravel beschweren. Ich denke, das liegt daran, dass die Entwickler besorgt sind Die Entwicklung wird zu reibungslos verlaufen.

public function login_data()
{
  $userInput = \Request::get('captcha');
  if (Session::get('milkcaptcha') == $userInput) {
    //用户输入验证码正确,验证你自己密码用户名
    echo 1;
  } else {
    //用户输入验证码错误
    echo 2;
  }
}
Verwandte Empfehlungen:

Vollständige Anmeldeüberprüfung mit node.js+captchapng+jsonwebtoken

10 empfohlene Artikel über Captcha-Beispiele

Teilen Sie ein Beispiel für die Verwendung von captchapng zum Generieren von Bildverifizierungscode in Nodejs

Das obige ist der detaillierte Inhalt vonLaravel5.2 verwendet Captcha, um Bestätigungscodes zu generieren und Anmeldemethoden zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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