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을 클릭합니다.

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

참조:


 

좋은 웹페이지 즐겨찾기