Laravel 8 및 9 사용자 가장 예제
11928 단어 phplaraveljavascripttutorial
이 게시물에서는 Laravel 8 및 9 사용자 가장을 구현하는 방법을 공유하고 있습니다. 일반적으로 이 기능을 사용하여 관리자를 대신하여 로그인합니다. 사용자 가장은 사용자에게 액세스하고 계정에서 수행한 작업을 확인하려는 사용자를 관리할 때 유용합니다.
이렇게 하면 보안 문제와 사용자의 개인 정보가 유출될 수 있으므로 주의해야 합니다. 따라서 올바르게 구현된 경우 코드를 다시 확인해야 합니다.
이 튜토리얼을 간단히 하기 위해 이미 인증 및 역할이 있는 이전 코드를 사용하고 있습니다. 사용하려는 경우 볼 수 있습니다here.
1단계: 패키지 설치
404labfr Laravel impersonate 패키지를 사용하고 있습니다. 로컬 프로젝트에 다음 명령을 실행합니다.
composer require lab404/laravel-impersonate
2단계: 사용자 모델 설정
사용자 모델에 이 Impersonate를 사용하십시오. 전체 모델 코드는 아래를 참조하십시오.
<?php
namespace App\Models;
use Laravel\Sanctum\HasApiTokens;
use Spatie\Permission\Traits\HasRoles;
use Illuminate\Notifications\Notifiable;
use Lab404\Impersonate\Models\Impersonate;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable, HasRoles, Impersonate;
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'users';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name',
'email',
'username',
'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
/**
* Always encrypt password when it is updated.
*
* @param $value
* @return string
*/
public function setPasswordAttribute($value)
{
$this->attributes['password'] = bcrypt($value);
}
}
3단계: 경로
2줄의 경로를 추가합니다. 아래 예를 참조하십시오.
Route::get('/{user}/impersonate', 'UsersController@impersonate')->name('users.impersonate');
Route::get('/leave-impersonate', 'UsersController@leaveImpersonate')->name('users.leave-impersonate');
참고: 허용되지 않는 역할에 대해 액세스할 수 없는 이 경로에 대한 제한을 설정해야 합니다.
4단계: 컨트롤러
아래의 다음 메소드를 UsersController에 추가하십시오.
public function impersonate(User $user)
{
auth()->user()->impersonate($user);
return redirect()->route('home.index');
}
public function leaveImpersonate()
{
auth()->user()->leaveImpersonation();
return redirect()->route('home.index');
}
5단계: 테이블 사용자 목록
테이블 사용자 목록에 대한 인덱스 블레이드 파일에 다음 코드를 추가합니다.
@role('Admin')
<td>
@if($user->id != auth()->id())
<a href="{{ route('users.impersonate', $user->id) }}" class="btn btn-warning btn-sm">Impersonate</a>
@endif
</td>
@endrole
위에서 볼 수 있듯이 관리자만 이 열을 볼 수 있습니다.
6단계: Navbar 블레이드(가장 종료)
당신의 navbar에 당신은 이것을 메뉴와 당신이 좋아하는 것에 넣을 수 있습니다. 사용자 가장을 떠나려면. 아래 샘플 코드를 참조하십시오.
@auth
<div class="text-end">
@if(session('impersonated_by'))
<a href="{{ route('users.leave-impersonate') }}" class="btn btn-outline-light me-2">Leave Impersonation</a>
@endif
</div>
@endauth
참고: 이전 튜토리얼을 사용하는 경우 아래 명령을 실행하는 것을 잊지 마십시오.
php artisan permission:create-permission-routes
새 경로를 권한으로 등록합니다.
그리고 이 "users.leave-impersonate"에 대한 권한을 사용자 역할에 추가하는 것을 잊지 마십시오. 관리자가 가장을 종료하려는 경우 일반 사용자가 해당 경로에 액세스할 수 있습니다.
또한 이러한 권한을 관리자 역할(users.impersonate, users.leave-impersonate)에 추가하는 것을 잊지 마십시오.
이 튜토리얼이 도움이 되었으면 합니다. 이 코드를 다운로드하려면 여기https://codeanddeploy.com/blog/laravel/laravel-8-user-impersonation-example를 방문하십시오.
Reference
이 문제에 관하여(Laravel 8 및 9 사용자 가장 예제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/codeanddeploy/laravel-8-and-9-user-impersonation-example-2hac텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)