예 를 들 어 Laravel 의 등록 재 구성 을 상세 하 게 설명 합 니 다.

11964 단어 laravel책.재 구성
1.먼저 사용자 등록 경로 확인
우리 가 laravel 을 설치 할 때 기본적으로 생 성 된 등록 은 메 일 로 등록 되 어 있 으 며,어떤 옵션 은 필요 하지 않 으 며,어떤 옵션 은 폼 옵션 을 추가 해 야 합 니 다.
우리 가 등록 하면 함부로 등록 할 수 있 는 것 이 아니 라 일부 슈퍼 관리자 만 등록 할 수 있 습 니 다.
우선 지난번 에 만 든UserController을 사용 하여 설정 합 니 다.없 으 면php artisan make:controller UserController컨트롤 러 클래스 를 만 들 수 있 습 니 다.
그리고 두 개의 경로Route::get('register', 'UserController@getRegister')Route::post('register', 'UserController@postRegister')
를 만 듭 니 다.
전 자 는 등 록 된 페이지get요청 을 표시 하고 그 다음은 계 정 등록 요청post입 니 다.
2.등 록 된 계 정 페이지 표시
이것 은getRegister이 방법 을 사용 합 니 다.이 방법 은 하나의 보기 만 표시 하기 때문에 특별한 논리 가 없습니다.

public function getRegister()
{
 return view('auth.register');
}
3.계 정 등록 요청
이것 은postRegister이 방법 을 사용 합 니 다.
계 정 을 등록 하면 비밀 번 호 를 리 셋 하 는 것 과 마찬가지 로 계 정 을 등록 하 는 것 보다 더 간단 하 다.
Google 은 데이터베이스 에 사용자 기록 을 삽입 할 때User::create($data)를 사용 하여 삽입 할 수 있 습 니 다.$data은 각 필드 의 키 와 값 을 저장 하 는 배열 입 니 다.

public function postRegister(Request $request)
{
 $rules = [
  'username'=>'required|unique:finance_enewsuser',
  'password' => 'required|between:6,20|confirmed'
 ];
 $messages = [
  'required'=>':attribute    ',
  'unique'=>'       ',
  'between' => '     6~20   ',
  'confirmed' => '           '
 ];
 $username = $request->input('username');
 $password = $request->input('password');
 $group = $request->input('group');
 $data = $request->all();
 $validator = Validator::make($data, $rules, $messages);
 if ($validator->fails()) {
  return back()->withErrors($validator);
 }
 $data = [
  'username' => $username,
  'password' => bcrypt($password),
  'groupid' => $group,
  'checked' => 0,
  'styleid' => 1,
  'filelevel' => 0,
  'loginnum' => 0,
  'lasttime' => time(),
  'lastip' => '127.0.0.1',
  'truename' => '',
  'email' => '',
  'pretime' => time(),
  'preip' => '127.0.0.1',
 ];
 User::create($data); //       ,           
 //             ,    $user = User::create($data); Auth::login($user);     
 return redirect('/');
}
4.완 성 된 예시
UserController

public function getRegister()
{
 return view('auth.register');
}

public function postRegister(Request $request)
{
 $rules = [
  'username'=>'required|unique:finance_enewsuser',
  'password' => 'required|between:6,20|confirmed'
 ];
 $messages = [
  'required'=>':attribute    ',
  'unique'=>'       ',
  'between' => '     6~20   ',
  'confirmed' => '           '
 ];
 $username = $request->input('username');
 $password = $request->input('password');
 $group = $request->input('group');
 $data = $request->all();
 $validator = Validator::make($data, $rules, $messages);
 if ($validator->fails()) {
  return back()->withErrors($validator);
 }
 $data = [
    'username' => $username,
    'password' => bcrypt($password),
    'groupid' => $group,
    'checked' => 0,
    'styleid' => 1,
    'filelevel' => 0,
    'loginnum' => 0,
    'lasttime' => time(),
    'lastip' => '127.0.0.1',
    'truename' => '',
    'email' => '',
    'pretime' => time(),
    'preip' => '127.0.0.1',
   ];
 User::create($data); //       ,           
 return redirect('/');
}
register.blade

<form class="login-form" action="" method="post">
 {!! csrf_field() !!}
 <h3 class="font-green">Sign Up</h3>
 @if(count($errors) > 0)
  <div class="alert alert-danger display-hide" style="display: block;">
   <button class="close" data-close="alert"></button>
   <span> </span>
  </div>
 @endif
 <div class="form-group">
  <label class="control-label visible-ie8 visible-ie9">   </label>
  <input class="form-control placeholder-no-fix" type="text" autocomplete="off" placeholder="Username" name="username"> </div>
 <div class="form-group">
  <label class="control-label visible-ie8 visible-ie9">  </label>
  <input class="form-control placeholder-no-fix" type="password" autocomplete="off" id="register_password" placeholder="Password" name="password"> </div>
 <div class="form-group">
  <label class="control-label visible-ie8 visible-ie9">    </label>
  <input class="form-control placeholder-no-fix" type="password" autocomplete="off" placeholder="Repeat password" name="password_confirmation"> </div>
 <div class="form-group">
  <label class="control-label visible-ie8 visible-ie9">   </label>
  <select name="group" class="form-control">
    <option value="1">       </option>
    <option value="2">     </option>
    <option value="3">    </option>
  </select>
 </div>
 <div class="form-actions">
  <button type="submit" id="register-submit-btn" class="btn btn-success uppercase pull-right">  </button>
 </div>
</form>
5.미들웨어 C 사용 자 는 로그 인해 야 합 니 다.
지금 등록 이 모두 끝 났 으 니 우 리 는 사용자 의 판단 이 부족 하 다.계 정 을 등록 하려 면 슈퍼 관리자 권한 이 있 는 계 정 만 등록 할 수 있어 야 합 니 다.
이러한 상황 에서 우리 의 일반적인 절차 에 따라 post Register 방법 에서 사용자 의 정 보 를 직접 찾 아 낸 다음 에 사용자 가 이 권한 을 만족 시 키 는 지,만족 하지 않 으 면 다른 페이지 로 넘 어 가 는 것 입 니 다.
이런 방법 은 가능 합 니 다.그러나 우 리 는 슈퍼 관리자 와 관리자 의 권한 이 있 는 이상 한 곳 에서 만 사용 하 는 것 이 아니 라 다른 곳 에서 도 사용 할 것 입 니 다.
그리고model에 방법 을 쓰 고 나중에 필요 하면 직접 호출 할 수 있다 는 생각 이 들 것 이다.
이 방법 도 괜 찮 습 니 다.하지만 저 희 는 laravel 이 제공 하 는 미들웨어 라 는 기능 을 사용 하 는 것 을 추천 합 니 다.이 기능 은 매우 강하 고 사용 하기 도 좋 습 니 다.지금 우 리 는 미들웨어 라 는 기능 을 사용한다.
우 리 는 백 엔 드 콘 텐 츠 관리 시스템 이기 때문에 먼저 중간 부품 을 만 듭 니 다.모든 페이지 가 들 어가 기 전에 로그 인 상태 여야 합 니 다.그렇지 않 으 면 로그 인 페이지 로 넘 어가 야 합 니 다.
매 뉴 얼 을 보면php artisan make:middleware CheckLoginMiddleware명령 으로 미들웨어 를 만 들 수 있 습 니 다.물론 차이 가 많 지 않 은 파일 을 복사 하고 고 쳐 도 마찬가지 입 니 다.
그 다음 에app/Http/Middleware/디 렉 터 리 에CheckLoginMiddleware미들웨어 파일 을 만 들 었 습 니 다.그 안에 하나의handle()방법 만 있 습 니 다.우 리 는 그 안에 우리 의 기능 을 직접 추가 합 니 다.

<?php

namespace App\Http\Middleware;

use Closure;
use Auth;

class CheckLoginMiddleware
{
 public function handle($request, Closure $next)
 {
  //  Auth  ,    use Auth;  
  //$request->is('login')     URL      
  //           ,  ,        ,        
  //         /login,  /auth/login  ,  $request->is('auth/login')
  //                ,                
  $response = $next($request);
  if (!Auth::check() && !$request->is('login')) {
   return redirect('/login');
  }
  return $response;
 }
}
이 미들웨어 의 기능 은 경로 가 있 으 면 먼저Auth::check()를 사용 하여 사용자 의 로그 인 여 부 를 판단 하고 로그 인 하지 않 은 사람 이 로그 인 페이지 로 이동 하 는 것 이다.
방법 은 다 썼 지만 아직 사용 할 수 없습니다.우 리 는 이 미들웨어 를 등록 해서 프레임 워 크 에 우리 에 게 이 미들웨어 가 다 썼 고 사용 할 수 있 는 범위 가 어디 인지 알려 야 합 니 다.app/Http/디 렉 터 리 아래 에 있 는Kernel.php파일 은 이 미들웨어 를 등록 한 것 이다.즉,프레임 워 크 에 우리 가 이 미들웨어 를 다 썼 다 는 것 을 알려 주 는 것 이다.
한편,Kernel.php파일 에는 두 개의 배열 속성 이 있 는데 하 나 는$middleware전체 사용 을 나타 내 고 하 나 는$routeMiddleware선택 하여 사용 할 수 있다 는 것 을 나타 낸다.
전역 적 으로 사용 하 는 것 은 어떤 페이지 를 요청 하 든 이 미들웨어 를 먼저 실행 한 다 는 뜻 이다.
어떤 HTTP 요청 이 필요 한 지,중간 부품 을 실행 하 라 는 요청 이 있 는 곳 에서 실행 할 지 선택 하 십시오.
이 페이지 마다 로그 인 을 요구 하면 전역 적 으로 등록 할 수 있 습 니 다.$middleware배열 속성 에 하 나 를 추가 할 수 있 습 니 다.

\App\Http\Middleware\CheckLoginMiddleware::class
등록 하면 사용 할 수 있 습 니 다.
>메모:전 체 를 정의 할 때 특히 조심해 야 한 다 는 것 을 기억 하 세 요.예 를 들 어 위 에서 우 리 는 로그 인 페이지 를 제외 해 야 합 니 다.그렇지 않 으 면 사용자 가 로그 인 하지 않 았 기 때문에 어느 페이지 에서 든 로그 인 페이지 로 다시 설정 합 니 다.물론 로그 인 페이지 도 포함 되 어 있 습 니 다.
6.미들웨어 C 특수 페이지 는 사용자 그룹 을 검증 해 야 합 니 다.
지금 은 사용자 권한 페이지 를 제한 하 는 것 입 니 다.마찬가지 로 미들웨어 를 다시 만들어 야 합 니 다.php artisan make:middleware CheckGroupMiddleware을 사용 하여 새 미들웨어 를 만 들 고 이 사용자 가 이 권한 을 만족 시 키 는 지 판단 합 니 다.

<?php

namespace App\Http\Middleware;

use Closure;
use Auth;

class CheckGroupMiddleware
{
 public function handle($request, Closure $next)
 {
  $user = Auth::user();
  if ($user->groupid != 1) {
   return redirect('/');
  }
  return $next($request);
 }
}
여기 서 저 희 는Auth::user()을 통 해 사용자 의 정 보 를 얻 은 다음 에 사용자 의 그룹 을 판단 하고 슈퍼 관리자 에 속 하지 않 으 면 첫 페이지 로 넘 어 갑 니 다.
그리고 우 리 는app/Http/디 렉 터 리 아래 에Kernel.php파일 이 이 미들웨어 를 등록 한 것 입 니 다.이번에 우 리 는 선택 할 수 있 는 미들웨어 로 등록 합 니 다.
이 미들웨어 는 선택 할 수 있 기 때문에 우 리 는 그것 에 별명 을 지어 야 합 니 다.$routeMiddleware배열 속성 에 하나 와 같 습 니 다.

'user.group' => \App\Http\Middleware\CheckGroupMiddleware::class
usergroup이라는 이름 을 사용 할 수 있 는 미들웨어 를 만 듭 니 다.
만 든 후에 우 리 는 어디에서 사용 할 지 선택 할 수 있 습 니 다.하 나 는router.php경로 파일 에 가입 하고 하 나 는controller에서 사용 할 수 있 습 니 다.
router.php 파일 에서 사용 하기

Route::get('/', ['middleware' => ['user.group'], function () {
 //
}]);
컨트롤 러 에서 사용

$this->middleware('user.group');
여기 서 우 리 는 경로 에 중간 부품 을 추가 하 는 것 을 선택 했다.등록 페이지 는 슈퍼 관리자 만 등록 할 수 있 습 니 다.

Route::get('register', 'UserController@getRegister')->middleware('user.group');
Route::post('register', 'UserController@postRegister')->middleware('user.group');
우 리 는 현재 두 가지 경로 만 권한 을 판단 해 야 하기 때문에 체인 식 의 쓰기 방법 을 사용 했다.물론 수첩 에 있 는 그룹 을 사용 하 는 방식 에 따라 그룹의 방식 이 더욱 우아 할 수 있다.
물론 전체 컨트롤 러 안의 방법 이 중간 부품 을 검증 하고 필 터 를 해 야 한다 면 그룹 형식 을 만 들 수도 있 고 컨트롤 러 안에서__construct방법 을 직접 사용 할 수도 있 습 니 다.이 컨트롤 러 를 요청 할 때마다 중간 부품 을 먼저 실행 할 수도 있 습 니 다.

class MyController extends Controller
{
 public function __construct()
 {
  $this->middleware('user.group');
 }

 public function index()
 {
  return view('my.index');
 }
}
총결산
이상 은 Laravel 등록 재 구축 의 모든 내용 입 니 다.본 논문 의 내용 이 여러분 에 게 Laravel 을 사용 하 는 데 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 댓 글 토론 을 환영 합 니 다.편집장 은 가능 한 한 빨리 답 해 드 리 겠 습 니 다.

좋은 웹페이지 즐겨찾기