수준별 - 관리자 로그인
13042 단어 Laravelpermission다중 인증
Laravel-Pemision을 사용하여 관리자, 관리 그룹을 쉽게 설정할 수 있습니다.
여기서 로그인 화면을 고객용과 관리자용으로 나누어 보세요.
사용자 정의 Auth
· 사용자 role을 통해/login/{enter_role}을 판단합니다.
· 인증 후, enter_롤과 사용자 롤이 일치하지 않으면 강제로 로그아웃합니다.
Laravel5.5 및 Laravel6.0이 검증되었습니다.
Laravel-Pemision 설치가 필요합니다.
・ 덮어쓰는 방법, 소스 코드 확인을 통한 이해 향상!
사용자 정의 감사
App/Http/Controllers/Auth/LoginController.php
//追加
use Illuminate\Http\Request;
use Spatie\Permission\Traits\HasRoles;
use Illuminate\Support\Facades\Auth;
---
class LoginController extends Controller
{
---
use AuthenticatesUsers;
//オーバーライド
protected function redirectTo() {
if (auth()->user() !== null && auth()->user()->hasRole('admin')) {
return route('home');
} else {
return route('welcome');
}
}
//オーバーライド
public function showLoginForm($role = null)
{
session(['enter' => $role]);
return view('auth.login');
}
//オーバーライド
protected function authenticated(Request $request, $user) {
$role = $user->getRoleNames('items')[0];
$is_customer_login = (session('enter') == null && $role == 'customer');
$is_role_login = (session('enter') == $role);
if ($is_customer_login || $is_role_login) {
//
} else {
Auth::logout();
}
}
}
app/Http/Controllers/Auth/RegisterController.php//追加
use Spatie\Permission\Traits\HasRoles;
---
class RegisterController extends Controller
{
---
//オーバーライド
protected function create(array $data)
{
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
//デフォルト: role = 'customer'
$user->assignRole('customer');
return $user;
}
}
라우팅 설정routes/web.php
//ログイン後のリダイレクト先
Route::get('/', function () {
return view('welcome');
});
Route::get('/home', 'HomeController@index')->name('home');
//追加
Route::get('/login/{role?}', 'Auth\LoginController@showLoginForm');
화면 색상 설정 (레이아웃)resources/views/layouts/app.blade.php
//追加変更
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
@if (session('enter') !== null)
<style>body{background-color: tomato;}</style>
@endif
---
<!-- Authentication Links -->
@guest
@if (session('enter') == null)
<li><a href="{{ route('login') }}">Login</a></li>
<li><a href="{{ route('register') }}">Register</a></li>
@endif
@else
--
@endguest
---
로그인 후 화면 표시resources/views/home.blade.php
---
//変更
<div class="panel-body">
@role('admin')
<div class="alert alert-success">管理者様
@endrole
@role('customer')
<div>お客様
@endrole
のログインです。</div>
</div>
동작 확인
Laravel5.5 + Laravel-Permission-v2
Laravel6.0 + Laravel-Permission-v3
사용자 데이터는 Laravel-Pemision 설치 참조.
고객 사용자
/login-> 로그인
관리자 사용자
/login/admin-> 로그인
새 사용자가customer로 등록되었습니다.
관리자 등은 tinker나seed로 등록하십시오.
당신의 의견을 지적해 주십시오.
Reference
이 문제에 관하여(수준별 - 관리자 로그인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Fell/items/5cf6a98678acac20ee77텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)