예 를 들 어 Laravel 의 등록 재 구성 을 상세 하 게 설명 합 니 다.
우리 가 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 을 사용 하 는 데 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 댓 글 토론 을 환영 합 니 다.편집장 은 가능 한 한 빨리 답 해 드 리 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.