>  기사  >  PHP 프레임워크  >  Laravel 다중 도메인 이름(코드 포함)에서 필드 확인 방법 소개

Laravel 다중 도메인 이름(코드 포함)에서 필드 확인 방법 소개

不言
不言앞으로
2019-04-04 11:34:462421검색

이 글은 Laravel의 다중 도메인 이름(코드 포함)에 대한 소개를 제공합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

서문: 작성자가 웹사이트에 소프트웨어를 제출할 수 있도록 통합 작성자 백엔드가 개발되고 있습니다. 우리는 웹사이트 중 하나에 대한 작성자 백엔드를 개발했으며 이제 이 백엔드를 다른 웹사이트에 제공할 계획입니다. 여기에는 다음과 같은 특징이 있습니다.

우리가 방문하는 도메인 이름이 일관되지 않습니다. 해결 방법은 내 기사 중 하나인 Laravel Routing Research - Domain to Solve Multiple Domain Name Problems를 참조하세요.

두 번째로, 각 사이트는 백엔드에 대해 동일한 요구 사항을 갖습니다. 즉, 하나의 백엔드가 N개의 스테이션에서 사용됩니다.

기능 분할

시작하기 전에 시스템의 다양한 기능 지점을 분할하고 영향을 받는 지점을 추정해야 합니다.

로그인 및 등록

로그인 및 등록 기능이 가장 먼저 부담을 져야 합니다. 사용자는 등록 시 다른 도메인 이름에 액세스할 수 있습니다. 기록된 ID도 다릅니다. 따라서 다음 처리를 수행해야 합니다.

필드 추가identity

가중치 판단 수행

로그인 확인 수행

데이터 처리

이 내용은 논의되지 않습니다. 사용자의 신원에 따라 호출되는 데이터가 달라집니다.

등록 판단

판단 근거: php artisan make:auth를 사용한 후 기본적으로 이메일을 사용하여 로그인하고 양식 확인에서 이메일을 기본적으로 판단한다는 것을 알고 있습니다. 코드는 다음과 같습니다.

기본 양식 확인:

// Path:app/Http/Controllers/Auth/RegisterController.php
protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => ['required', 'string', 'max:255'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => ['required', 'string', 'min:8', 'confirmed'],
    ]);
}

기본 로그인 확인 필드

// Path:vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php
public function username()
{
    return 'email';
}
// 当然可以修改验证字段(看过文档的都知道),注意:登录验证字段必须是在表里面唯一的。

이제 요구 사항을 분석해야 합니다.
단일 사용자 배경에서는 이메일 판단으로 충분하지만 여러 사용자에게는 적합하지 않습니다. 함께 사용하면 충분합니다.
가정: 두 명의 사용자 a와 b에 해당하는 두 개의 도메인 이름 A와 B가 있습니다. 먼저 a와 b가 해당 도메인 이름(사이트)에 속하는지 확인해야 합니다. 이 사용자를 살펴보세요. 반복할지 여부입니다.
아래에서는 Laravel 양식 검증을 사용하여 구현하겠습니다.

필드 추가:
시연의 편의를 위해 make auth로 생성된 마이그레이션 파일을 직접 수정했습니다. 실제 프로젝트에서 직접 수정하지 말고 새로운 마이그레이션을 생성해 주세요. 테이블 구조를 수정하여 필드를 추가하세요

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('name');
        $table->string('email');      // 去掉原来的unique
        $table->string('identity');   // 增加的字段
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });
}

참고: 이 요구 사항에서는 마이그레이션 파일의 이메일 및 이름 필드를 고유하게 한정할 필요가 없습니다. 해당 필드의 고유성은 독립적이지 않고 종속적이기 때문입니다.

사용자 등록 시뮬레이션, 신원 정보 삽입

// Path: app/Http/Controllers/Auth/RegisterController.php
protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
        'identity' => 'pcsoft', // 模拟用户注册时,插入身份字段值
    ]);
}

중중 판단 처리

protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => ['required', 'string', 'max:255'],
        'email' => ['required', 'string', 'email', 'max:255', Rule::unique('users')->where(function ($query) {
            $query->where('identity', '=', 'onlinedown');
        })], // 这句话的意思:按照什么条件对 users 表中的 email 去重,我们需要按照身份字段等于我们访问的域名对 email 去重,
        'password' => ['required', 'string', 'min:8', 'confirmed'],
    ]);
}

테스트

첫 번째 등록의 경우 데이터베이스 스크린샷은 다음과 같습니다.

Laravel 다중 도메인 이름(코드 포함)에서 필드 확인 방법 소개

두 번째 등록의 경우, 동일한 이메일, 다른 신원:

Laravel 다중 도메인 이름(코드 포함)에서 필드 확인 방법 소개

동일한 신원, 동일한 이메일 주소 테스트

Laravel 다중 도메인 이름(코드 포함)에서 필드 확인 방법 소개

로그인 확인

자격 증명 덮어쓰기, 인증 필드 전달

// Path:app/Http/Controllers/Auth/LoginController.php
protected function credentials(Request $request)
{
    $request->merge(['identity' => Controller::getWebPrefix()]);
    return $request->only($this->username(), 'password', 'identity');
}

[관련 권장 사항: PHP 비디오 튜토리얼]

위 내용은 Laravel 다중 도메인 이름(코드 포함)에서 필드 확인 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제