> php教程 > PHP开发 > 본문

Laravel에서 백엔드 로그인 시스템을 구축하는 단계에 대한 자세한 설명

高洛峰
풀어 주다: 2016-12-23 17:14:48
원래의
1502명이 탐색했습니다.

이 기사의 예에서는 Laravel에서 백엔드 로그인 시스템을 구축하는 방법을 설명합니다. 참고하실 수 있도록 자세한 내용은 다음과 같습니다.

오늘은 laravel을 사용하여 가장 간단한 백엔드 시스템을 구축하고자 합니다. 사용해 보니 laravel 사용자도 로그인이 가능한 것 같은 느낌이 듭니다. 정말 기쁩니다. 물론, 전제는 당신이 원하는 사용자 관리 시스템이 가장 간단한 것, 즉 사용자 권한 없이 로그인만 하면 된다는 것입니다.

기본 사용자 테이블은 Laravel의 일부 기본 설정과 혼동되기 쉽기 때문에 여기서는 예로 사용하지 않겠습니다.

우선, 백그라운드의 사용자 테이블이 badin이라는 것을 확인하세요. 각 관리자는 사용자 이름, 닉네임, 이메일, 비밀번호를 가지고 있습니다.

여기서 재미로 laravel의 마이그레이션을 사용하여 테이블 (실제로는 테이블을 생성하기 위해 이 도구를 사용할 필요가 없습니다)

1 가장 기본적인 라라벨 프레임워크 설치

2 마이그레이션 파일 생성:

./artisan 마이그레이션:make create-badmin-table

3 app/database/migration/에서 추가 PHP 파일을 찾았습니다:

2014_10_19_090336_create-badmin -table.php

4 콘텐츠 추가

<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateBadminTable extends Migration {
   /**
   * Run the migrations.
   *
   * @return void
   */
   public function up()
   {
     Schema::create(&#39;badmin&#39;, function($table)
     {
       $table->increments(&#39;id&#39;);
        $table->string(&#39;nickname&#39;, 100)->unique();
        $table->string(&#39;username&#39;, 100)->unique();
        $table->string(&#39;email&#39;, 100)->unique();
        $table->string(&#39;password&#39;, 64);
        $table->timestamps();
     });
   }
   /**
   * Reverse the migrations.
   *
   * @return void
   */
   public function down()
   {
     Schema::drop(&#39;badmin&#39;);
   }
}
로그인 후 복사

5 로컬 데이터베이스 구성, app/config /local/database.php

<?php
return array(
  &#39;fetch&#39; => PDO::FETCH_CLASS,
  &#39;default&#39; => &#39;mysql&#39;,
  &#39;connections&#39; => array(
    &#39;mysql&#39; => array(
      &#39;driver&#39;  => &#39;mysql&#39;,
      &#39;host&#39;   => &#39;localhost&#39;,
      &#39;database&#39; => &#39;test&#39;,
      &#39;username&#39; => &#39;yejianfeng&#39;,
      &#39;password&#39; => &#39;123456&#39;,
      &#39;charset&#39;  => &#39;utf8&#39;,
      &#39;collation&#39; => &#39;utf8_unicode_ci&#39;,
      &#39;prefix&#39;  => &#39;&#39;,
    ),
  ),
  &#39;migrations&#39; => &#39;migrations&#39;,
);
로그인 후 복사

6 데이터 테이블 생성:

./artisan migration --env=local

이때 데이터베이스에 가서 보니, 여분의 badadmin 테이블이 있었습니다. 데이터 구조는 다음과 같습니다:

CREATE TABLE `badmin` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `nickname` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
 `username` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
 `email` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
 `password` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
 `created_at` timestamp NOT NULL DEFAULT &#39;0000-00-00 00:00:00&#39;,
 `updated_at` timestamp NOT NULL DEFAULT &#39;0000-00-00 00:00:00&#39;,
 PRIMARY KEY (`id`),
 UNIQUE KEY `badmin_nickname_unique` (`nickname`),
 UNIQUE KEY `badmin_username_unique` (`username`),
 UNIQUE KEY `badmin_email_unique` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
로그인 후 복사

create_at 및 update_at, 이들은 각 테이블에 대해 기본적으로 laravel에 의해 생성되는 필드이며, 이 두 필드는 Eloquent를 사용할 때 자동으로 업데이트될 수 있습니다. 추가, 삭제, 수정 및 쿼리 수행

7 모델 생성:

<?php
use Illuminate\Auth\UserTrait;
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableTrait;
use Illuminate\Auth\Reminders\RemindableInterface;
class Badmin extends Eloquent implements UserInterface, RemindableInterface {
   use UserTrait, RemindableTrait;
   protected $table = &#39;badmin&#39;;
   protected $hidden = array(&#39;password&#39;);
   public static $rules = [
     &#39;nickname&#39; => &#39;required|alpha_num|min:2&#39;,
     &#39;username&#39; => &#39;required&#39;,
     &#39;email&#39;=>&#39;required|email|unique:badmin&#39;,
     &#39;password&#39;=>&#39;required|alpha_num|between:6,12|confirmed&#39;,
   ];
}
로그인 후 복사

여기서 UserInterface 및 RemindableInterface를 구현해야 합니다

8 모델을 인증과 연결하고 app/config/auth.php를 수정합니다

<?php
return array(
   // 默认的用户验证驱动
   // 可以是database或者eloquent
   &#39;driver&#39; => &#39;eloquent&#39;,
   // 只有驱动为eloquent的时候才有用
   &#39;model&#39; => &#39;Badmin&#39;,
);
로그인 후 복사

여기서 드라이버는 웅변 또는 데이터베이스를 사용할 수 있습니다. eloquent는 사용자 인증 클래스가 Badmin 클래스에 의해 관리된다는 것을 Auth 구성 요소에 알려줍니다. 여기 모델에는 네임스페이스가 있습니다. 즉, 관리자 클래스가 YejianfengBadmin이면 'YejianfengBadmin'으로 변경해야 합니다

9 자, 이제 로직 부분이 실제로 빌드되었으며 이미 컨트롤러에서

Auth::attempt(XXX)를 사용하여 권한 인증을 수행할 수 있습니다.

Auth::user()를 사용하여 로그인한 사용자(Badmin 클래스)를 얻을 수 있습니다.

등.

10 다음으로 사용자 로그인 페이지 만들기:


11 라우팅 설정:

Laravel에서 백엔드 로그인 시스템을 구축하는 단계에 대한 자세한 설명

<?php
// 不需要登录验证的接口
Route::get(&#39;/&#39;, [&#39;as&#39; => &#39;user.login&#39;,&#39;uses&#39;=>&#39;UserController@getLogin&#39;]);
Route::get(&#39;user/login&#39;, [&#39;as&#39; => &#39;login&#39;, &#39;uses&#39; => &#39;UserController@getLogin&#39;]);
Route::post(&#39;user/login&#39;, [&#39;as&#39; => &#39;login&#39;, &#39;uses&#39; => &#39;UserController@postLogin&#39;]);
// 需要登录验证才能操作的接口
Route::group(array(&#39;before&#39; => &#39;auth&#39;), function()
{
  Route::get(&#39;user/logout&#39;, [&#39;as&#39; => &#39;logout&#39;, &#39;uses&#39; => &#39;UserController@getLogout&#39;]);
  Route::get(&#39;user/dashboard&#39;, [&#39;as&#39; => &#39;dashboard&#39;, &#39;uses&#39; => &#39;UserController@getDashboard&#39;]);
});
로그인 후 복사

12 컨트롤러 설정:

<?php
class UserController extends BaseController {
   // 登录页面
   public function getLogin()
   {
     return View::make(&#39;user.login&#39;);
   }
   // 登录操作
   public function postLogin()
   {
     if (Auth::attempt(array(&#39;email&#39;=>Input::get(&#39;email&#39;), &#39;password&#39;=>Input::get(&#39;password&#39;)))) {
       return Redirect::to(&#39;user/dashboard&#39;)
       ->with(&#39;message&#39;, &#39;成功登录&#39;);
     } else {
       return Redirect::to(&#39;user/login&#39;)
          ->with(&#39;message&#39;, &#39;用户名密码不正确&#39;)
          ->withInput();
     }
   }
   // 登出
   public function getLogout()
   {
     Auth::logout();
     return Redirect::to(&#39;user/login&#39;);
   }
   public function getDashboard()
   {
     return View::make(&#39;user.dashboard&#39;);
   }
   // 添加新用户操作
   public function getCreate()
   {
     return View::make(&#39;user.create&#39;);
   }
   // 添加新用户操作
   public function postCreate()
   {
     $validator = Validator::make(Input::all(), User::$rules);
     if ($validator->passes()){
        $bAdmin = new Badmin();
        $bAdmin->nickname = Input::get(&#39;nickname&#39;);
        $bAdmin->username = Input::get(&#39;username&#39;);
        $bAdmin->email = Input::get(&#39;email&#39;);
        $user->password = Hash::make(Input::get(&#39;password&#39;));
        $user->save();
        Response::json(null);
     } else {
        Response::json([&#39;message&#39; => &#39;注册失败&#39;], 410);
     }
   }
}
로그인 후 복사

13 필터 설정, app/filter.php

Route::filter(&#39;auth&#39;, function()
{
   if (Auth::guest())
   {
     if (Request::ajax())
     {
        return Response::make(&#39;Unauthorized&#39;, 401);
     }
     else
     {
        return Redirect::guest(&#39;/&#39;);
     }
   }
});
로그인 후 복사

인증실패 후 주소를 /경로로 변경

14 views/user/login.blade.php

보시다시피 여기서 할 수 있습니다 Session::has 및 Session::get

을 직접 사용하면 기본적으로 완료됩니다...

이 기사가 Laravel 프레임워크를 기반으로 하는 모든 사람의 PHP 프로그램 설계에 도움이 되기를 바랍니다.

Laravel을 사용하여 백엔드 로그인 시스템을 구축하는 단계에 대한 자세한 설명은 PHP 중국어 웹사이트를 참고하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿