[Laravel7의 사용자 인증_3] 사용자 인증을 메일 주소에서 사용자 이름으로 변경
입문
Laravel 7에서 만든 사용자 인증은 전자 우편 주소와 비밀번호로 로그인하여 사용자 이름과 비밀번호로 변경하는 방법을 정리합니다.
환경
XAMPP 환경에서 Laravel을 사용할 수 있도록 설정합니다.
Windows10 Pro 64bit
PHP 7.3.18
Laravel 7.12.0
MariaDB 10.1.32
또한 Laravel 프로젝트는 다음 절차에 따라 사용자 인증을 일본어로 합니다.
users 테이블에username 추가
사용자 테이블에 사용자 이름을 추가하는 데 사용할 마이그레이션 파일을 만듭니다.$ php artisan make:migration add_username_to_users --table=users
database/migrations
에서 마이그레이션 파일을 작성하므로 추가 username
열의 내용을 작성해야 합니다.
database/migrations/날짜_add_username_to_users.php /**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
- //
+ //文字長32、ユニーク制約、idカラムの直後に追加、コメント「ユーザー名」でusernameカラム追加
+ $table->string('username', 32)->unique('users_username_unique')->after('id')->comment('ユーザー名');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
- //
+ $table->dropColumn('username');
});
}
데이터베이스에 반영합니다.$ php artisan migrate
username
열이 추가되었습니다.
새 등록에 사용자 이름 항목 추가
사용자를 등록할 때 사용자 이름을 입력해야 합니다.
뷰 변경
등록 화면에 사용자 이름 입력을 추가합니다.
이번에는 비밀번호에 항목을 추가했습니다.
resources/views/auth/register.blade.php @extends('layouts.app')
@section('content')
<div class="container">
~~~(略)~~~
<div class="form-group row">
<label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
<div class="col-md-6">
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email">
@error('email')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
+
+ <div class="form-group row">
+ <label for="name" class="col-md-4 col-form-label text-md-right">ユーザー名</label>
+
+ <div class="col-md-6">
+ <input id="username" type="text" class="form-control @error('username') is-invalid @enderror" name="username" value="{{ old('username') }}" required autocomplete="username">
+
+ @error('username')
+ <span class="invalid-feedback" role="alert">
+ <strong>{{ $message }}</strong>
+ </span>
+ @enderror
+ </div>
+ </div>
<div class="form-group row">
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>
{{ __('UserName') }}
에 번역 문자열resources/lang/ja.json
을 추가합니다.
(일본어화 정보 → 【Laravel7의 사용자 인증_2】 사용자 인증을 일본어로 만들기
resources/lang/ja.json {
+ "UserName": "ユーザー名",
"Register": "ユーザー登録",
"Name": "氏名",
사용자 모델 변경
사용자 모델에 사용자 이름을 추가합니다.
app/User.php /**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
- 'name', 'email', 'password',
+ 'name', 'email', 'password', 'username',
];
컨트롤러 변경
사용자 등록 컨트롤러 파일에username 검증 규칙과 등록 과정을 추가합니다.
app/Http/Controllers/Auth/RegisterController.php
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
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'],
+ 'username' => ['required', 'string', 'max:32', 'unique:users', 'regex:/^[a-zA-Z0-9-_]+$/],
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
+ 'username' => $data['username'],
]);
}
}
여기까지 할 수 있다면 등록해 볼게요.
검증 오류가 표시되는지 확인하려면 반각 이외의 문자 문자열을 입력합니다.
전각 문자를 입력하면 "username에 정확한 형식을 입력하십시오."라고 표시되기 때문에 사용자 정의 검증 속성 이름에 username을 추가합니다.
(일본어화 정보 → 【Laravel7의 사용자 인증_2】 사용자 인증을 일본어로 만들기
resources/lang/ja/validation.php /*
|--------------------------------------------------------------------------
| カスタムバリデーション属性名
|--------------------------------------------------------------------------
|
| 以下の言語行は、例えば"email"の代わりに「メールアドレス」のように、
| 読み手にフレンドリーな表現でプレースホルダーを置き換えるために指定する
| 言語行です。これはメッセージをよりきれいに表示するために役に立ちます。
|
*/
'attributes' => [
"name" => "氏名",
"email" => "メールアドレス",
"password" => "パスワード",
"password_confirmation" => "パスワード(確認用)",
+ "username" => "ユーザー名",
],
등록에 문제가 없으면 다음 로그인 부분을 변경해야 합니다.
로그인에 필요한 항목을 전자 메일 주소에서 사용자 이름으로 변경
뷰 변경
로그인 화면에 입력한 항목으로 메일 주소에서 사용자 이름으로 변경됩니다.
resources/views/auth/login.blade.php <form method="POST" action="{{ route('login') }}">
@csrf
<div class="form-group row">
- <label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
+ <label for="email" class="col-md-4 col-form-label text-md-right">{{ __('UserName') }}</label>
<div class="col-md-6">
- <input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email" autofocus>
+ <input id="username" type="username" class="form-control @error('username') is-invalid @enderror" name="username" value="{{ old('username') }}" required autocomplete="username" autofocus>
-
- @error('email')
+ @error('username')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
컨트롤러 변경
로그인 컨트롤에 함수 resources/lang/ja/validation.php
를 추가합니다.
로그인할 열 이름이 username()
또는 userid
이면 함수 이름이 loginname
로 유지되고 리턴이 되돌아오는 값을 각 열 이름으로 변경합니다.
app/Http/Controllers/Auth/LoginController.php /**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
+
+ public function username()
+ {
+ return 'username';
+ }
}
위의 작업을 통해 사용자 이름과 비밀번호를 사용하여 로그인할 수 있습니다.
웹 페이지 정보
$ php artisan make:migration add_username_to_users --table=users
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
- //
+ //文字長32、ユニーク制約、idカラムの直後に追加、コメント「ユーザー名」でusernameカラム追加
+ $table->string('username', 32)->unique('users_username_unique')->after('id')->comment('ユーザー名');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
- //
+ $table->dropColumn('username');
});
}
$ php artisan migrate
사용자를 등록할 때 사용자 이름을 입력해야 합니다.
뷰 변경
등록 화면에 사용자 이름 입력을 추가합니다.
이번에는 비밀번호에 항목을 추가했습니다.
resources/views/auth/register.blade.php
@extends('layouts.app')
@section('content')
<div class="container">
~~~(略)~~~
<div class="form-group row">
<label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
<div class="col-md-6">
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email">
@error('email')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
+
+ <div class="form-group row">
+ <label for="name" class="col-md-4 col-form-label text-md-right">ユーザー名</label>
+
+ <div class="col-md-6">
+ <input id="username" type="text" class="form-control @error('username') is-invalid @enderror" name="username" value="{{ old('username') }}" required autocomplete="username">
+
+ @error('username')
+ <span class="invalid-feedback" role="alert">
+ <strong>{{ $message }}</strong>
+ </span>
+ @enderror
+ </div>
+ </div>
<div class="form-group row">
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>
{{ __('UserName') }}
에 번역 문자열resources/lang/ja.json
을 추가합니다.(일본어화 정보 → 【Laravel7의 사용자 인증_2】 사용자 인증을 일본어로 만들기
resources/lang/ja.json
{
+ "UserName": "ユーザー名",
"Register": "ユーザー登録",
"Name": "氏名",
사용자 모델 변경
사용자 모델에 사용자 이름을 추가합니다.
app/User.php
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
- 'name', 'email', 'password',
+ 'name', 'email', 'password', 'username',
];
컨트롤러 변경
사용자 등록 컨트롤러 파일에username 검증 규칙과 등록 과정을 추가합니다.
app/Http/Controllers/Auth/RegisterController.php
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
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'],
+ 'username' => ['required', 'string', 'max:32', 'unique:users', 'regex:/^[a-zA-Z0-9-_]+$/],
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
+ 'username' => $data['username'],
]);
}
}
여기까지 할 수 있다면 등록해 볼게요.검증 오류가 표시되는지 확인하려면 반각 이외의 문자 문자열을 입력합니다.
전각 문자를 입력하면 "username에 정확한 형식을 입력하십시오."라고 표시되기 때문에 사용자 정의 검증 속성 이름에 username을 추가합니다.
(일본어화 정보 → 【Laravel7의 사용자 인증_2】 사용자 인증을 일본어로 만들기
resources/lang/ja/validation.php
/*
|--------------------------------------------------------------------------
| カスタムバリデーション属性名
|--------------------------------------------------------------------------
|
| 以下の言語行は、例えば"email"の代わりに「メールアドレス」のように、
| 読み手にフレンドリーな表現でプレースホルダーを置き換えるために指定する
| 言語行です。これはメッセージをよりきれいに表示するために役に立ちます。
|
*/
'attributes' => [
"name" => "氏名",
"email" => "メールアドレス",
"password" => "パスワード",
"password_confirmation" => "パスワード(確認用)",
+ "username" => "ユーザー名",
],
등록에 문제가 없으면 다음 로그인 부분을 변경해야 합니다.로그인에 필요한 항목을 전자 메일 주소에서 사용자 이름으로 변경
뷰 변경
로그인 화면에 입력한 항목으로 메일 주소에서 사용자 이름으로 변경됩니다.
resources/views/auth/login.blade.php <form method="POST" action="{{ route('login') }}">
@csrf
<div class="form-group row">
- <label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
+ <label for="email" class="col-md-4 col-form-label text-md-right">{{ __('UserName') }}</label>
<div class="col-md-6">
- <input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email" autofocus>
+ <input id="username" type="username" class="form-control @error('username') is-invalid @enderror" name="username" value="{{ old('username') }}" required autocomplete="username" autofocus>
-
- @error('email')
+ @error('username')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
컨트롤러 변경
로그인 컨트롤에 함수 resources/lang/ja/validation.php
를 추가합니다.
로그인할 열 이름이 username()
또는 userid
이면 함수 이름이 loginname
로 유지되고 리턴이 되돌아오는 값을 각 열 이름으로 변경합니다.
app/Http/Controllers/Auth/LoginController.php /**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
+
+ public function username()
+ {
+ return 'username';
+ }
}
위의 작업을 통해 사용자 이름과 비밀번호를 사용하여 로그인할 수 있습니다.
웹 페이지 정보
<form method="POST" action="{{ route('login') }}">
@csrf
<div class="form-group row">
- <label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
+ <label for="email" class="col-md-4 col-form-label text-md-right">{{ __('UserName') }}</label>
<div class="col-md-6">
- <input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email" autofocus>
+ <input id="username" type="username" class="form-control @error('username') is-invalid @enderror" name="username" value="{{ old('username') }}" required autocomplete="username" autofocus>
-
- @error('email')
+ @error('username')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
+
+ public function username()
+ {
+ return 'username';
+ }
}
Reference
이 문제에 관하여([Laravel7의 사용자 인증_3] 사용자 인증을 메일 주소에서 사용자 이름으로 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/crosawassant/items/2464db8a0fe1c603401a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)