Laavel 개발: 2. 사용자 인증 및 관리 화면 만들기

8365 단어 VoyagerPHPLaravel
이곳의 내용은 이미 블로거에 업로드되었다.

개시하다


이쪽이야. 계속해.
사용자와 관리자의 인증을 구분하기 위해'clients'를 사용자의 관리표로 추가했습니다.
화면 관리에는 "Voyager"가 사용됩니다.

환경:


OS : macOS High Sierra 10.13.6
MAMP : 5.1
Laravel : 5.7.6

DB 설정


MAMP를 실행하면 MAMP의 Top 화면이 표시됩니다.MySQL에 대한 설정 정보가 표시됩니다.
 

이쪽의'phpMyAdmin'링크에서 phpMyAdmin을 표시하여 프로젝트에 사용할 데이터베이스를 만듭니다.
데이터베이스를 만든 후.env 를 편집합니다.
APP_URL=http://localhost:8888 // MAMPで設定されているPORTに変更

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=8889
DB_DATABASE=laravel  // DB名
DB_USERNAME=root
DB_PASSWORD=root

사용자 인증


인증 기능 추가


Laavel 표준 인증 기능 추가
$ php artisan make:auth

사용자 모델 생성하기


사용자는 Center 테이블에서 관리되며 표준 users 테이블은 관리자가 관리합니다.
php artisan make:model Client -m
디렉토리에 마이그레이션 파일이 생성되었습니다.DATE_TIME_create_users_table.php 내용TIME_create_clients_table.php로 복사합니다.
<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateClientsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('clients', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::dropIfExists('clients');
}


}

옮기다

$ php artisan migrate
phpmyAdmin으로 확인하면 양식이 작성되었는지 확인할 수 있습니다.

인증표를 users에서clients로 변경


「/config/auth.php」
    // デフォルトの認証ガード        
    'defaults' => [
        // 認証ガードを変更する。guardとpasswordsの設定は以下に記述します
        'guard' => 'clients',
        'passwords' => 'clients',
    ],

// 認証ガード
'guards' =&gt; [

    ...

    // 新しく認証ガードを追加します
    'clients' =&gt; [
        'driver' =&gt; 'session',
        'provider' =&gt; 'clients',
    ],
],

// 認証プロバイダー
'providers' =&gt; [

    ...

    // 新しく認証プロバイダーを追加します。
    'clients' =&gt; [
        'driver' =&gt; 'eloquent',
        'model' =&gt; App\Client::class,
    ],
],

// 認証パスワード
'passwords' =&gt; [

    ...

    //password追加
    'clients' =&gt; [
        'provider' =&gt; 'clients',
        'table' =&gt; 'password_resets',
        'expire' =&gt; 60,
    ],
],


·기본 인증 보호를 이번에 새로 추가된'클라이언트'로 변경합니다.
 

Register Controller 편집


계정을 추가할 때 처리를 클라이언트로 변환하려면 Register Controller를 편집합니다.
「/app/Http/Controller/Auth/RegisterController.php」
//use App\User;
use App\Client;
...

class RegisterController extends Controller
{

...

protected function validator(array $data)
{
    return Validator::make($data, [
        'name' =&gt; 'required|string|max:255',
        // メールアドレスのユニークをclientテーブルに変更
        'email' =&gt; 'required|string|email|max:255|unique:clents',
        'password' =&gt; 'required|string|min:6|confirmed',
    ]);
}

...

protected function create(array $data)
{
    // モデルを変更
    return Client::create([
        'name' =&gt; $data['name'],
        'email' =&gt; $data['email'],
        'password' =&gt; Hash::make($data['password']),
    ]);
}


}

센터 모델 편집하기


User 모델을 참조하여 Client 모델을 편집합니다.
「/app/Client.php」
<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;

class Client extends Authenticatable
{
    use Notifiable;

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'name', 'email', 'password',
];

/**
 * The attributes that should be hidden for arrays.
 *
 * @var array
 */
protected $hidden = [
    'password', 'remember_token',
];


}

확인


「
 

오른쪽 위의 Register 메뉴를 클릭하여 로그인 화면에서 사용자를 추가합니다.

무사히 접속하면 완성입니다.

화면 관리


다음은 관리화면 제작.이번에는 보일러를 사용해 간단하게 화면을 관리하고 싶다.

Voyager 설치


명령에서 Voyagaer를 설치합니다.
$ composer require tcg/voyager
$ php artisan voyager:install

관리 화면과 사용자에 의해 세션 쿠키 분리


「/app/.env」
//追記
SESSION_COOKIE=auth
SESSION_COOKIE_ADMIN=auth-admin
「/config/session.php」
<?php

$conf = [

...


];

// 管理画面のセッションクッキーを変更する
$uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';

if (strpos($uri, '/admin/') === 0 || $uri === '/admin') {
    $conf['cookie'] = env(
        'SESSION_COOKIE_ADMIN',
        str_slug(env('APP_NAME', 'laravel'), '_').'_admin_session'
    );
}

return $conf;

관리 화면 인증 보호 변경


「/config/auth.php」
<?php

$conf = [

...


];

// 管理画面の場合は、デフォルトの認証ガードをuserに変更する
$uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';

if (strpos($uri, '/admin/') === 0 || $uri === '/admin') {
    $conf['defaults'] = [
        'guard' => 'web',
        'passwords' => 'users',
    ];
}

return $conf;
 

관리자 계정 추가

$ php artisan voyager:admin [email protected] --create

Enter the admin name:
 > admin

Enter admin password:
 >

Confirm Password:
 >

Creating admin account
The user now has full access to your site.
명령에 관리자 계정을 추가합니다.

확인


「

관리 화면을 표시하고 아까 추가된 관리자 계정으로 로그인하면 완성됩니다.

사용자 관리


측면 메뉴의 Tools&Database에서 테이블을 관리할 수 있는 관리 화면에 로그인합니다.

목록에서 clients의 "Add BREAD to this table"을 클릭하여 BREAD를 추가합니다.

편집 화면을 표시하고 맨 아래로 스크롤한 다음 Submit을 클릭합니다.

일람에서 사용자 정보를 볼 수 있다.

참조:


 

좋은 웹페이지 즐겨찾기