Laravel 다 중 필드 이름 필드 검증 방법

머리말
작가 가 사이트 에 소프트웨어 를 제출 할 수 있 도록 통일 작가 백 스테이지 를 개발 하고 있다.우 리 는 이미 그 중의 한 사이트 에 대해 작가 의 백 스테이지 를 개 발 했 는데,지금 우 리 는 이 백 스테이지 를 다른 사이트 에 제공 할 계획 이다.그것 은 다음 과 같은 몇 가지 특징 을 가지 고 있다.
  • 우리 가 방문 한 도 메 인 이름 은 일치 하지 않 습 니 다.해결 방안 은 제 글 을 보십시오.Laravel 경로 연구 domain 에서 다 중 도 메 인 이름 문 제 를 해결 합 니 다.
  • 그 다음 에 각 사이트 가 백 스테이지 에 대한 요구 가 일치 합 니 다.즉,하나의 백 스테이지 N 이 각 역 에서 사용 하 는 것 입 니 다.
  • 기능 분할
    시작 하기 전에 우 리 는 시스템 의 각 기능 점 을 분리 하고 영향 을 받 은 점 을 추산 해 야 한다.
    등록
    로그 인 등록 기능 이 가장 중요 합 니 다.저 희 는 사용자 가 등록 할 때 방문 하 는 도 메 인 이름 이 다 르 고 기록 하 는 신분 도 다 릅 니 다.그래서 우 리 는 다음 과 같은 처 리 를 해 야 한다.
  • 필드 idenity 증가
  • 선고 중량
  • 로그 인 검증
  • 데이터 처리
  • 이 건 토론 하지 않 겠 습 니 다.사용자 가 속 한 신분 에 따라 호출 된 데이터 도 다 르 면 됩 니 다.
  • 등록
    판단 근거:
    우 리 는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 를 저장 해 야 합 니 다.먼저 우 리 는 a,b 가 그 도 메 인 이름(사이트)에 속 하 는 지 판단 하고 그 다음 에 이 사용자 가 중복 되 는 지 확인 해 야 합 니 다.
    다음은 Laravel 폼 검증 으로 이 루어 집 니 다.
    1.필드 추가:
    프 리 젠 테 이 션 을 편리 하 게 하기 위해 저 는 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();
     });
    }
    메모:이 수요 에서 저 희 는 이전 파일 의 email 과 name 필드 에 대해 유 니 크 한 제한 을 할 필요 가 없습니다.그들의 유일 성 은 의존 적 이 고 독립 적 이지 않 기 때 문 입 니 다.
    2.아 날로 그 사용자 등록,신분 정보 삽입
    
    // 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', //        ,       
     ]);
    }
    3.재 처리
    
    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'],
     ]);
    }
    4.테스트
    첫 번 째 등록 을 진행 합 니 다.데이터 베 이 스 는 다음 과 같 습 니 다.

    두 번 째 등록,같은 메 일,다른 신분:

    동일 신분,동일 메 일 테스트

    로그 인 인증
    credentials 를 덮어 쓰 고 인증 필드 로 전송 합 니 다.
    
    // Path:app/Http/Controllers/Auth/LoginController.php
    protected function credentials(Request $request)
    {
     $request->merge(['identity' => Controller::getWebPrefix()]);
     return $request->only($this->username(), 'password', 'identity');
    }
    총결산
    이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.

    좋은 웹페이지 즐겨찾기