1. 참고로 필자는 무료 라라벨 어드민 페이지를 쓰고, php 7 환경이다.
https://startlaravel.com/themes/sb-admin-laravel-5/
2. resource에 view가 쪽에 로그인 페이지를 구성할텐데, 로그인 페이지 소스는 아래와 같다. 빨간색 부분이 핵심이다.
resource / view / login.blade.php
@extends ('layouts.plane')
@section ('body')
<div class="container">
<div class="row">
<div class="col-md-4 col-md-offset-4">
<br /><br /><br />
@section ('login_panel_title','로그인')
@section ('login_panel_body')
<form role="form" action="{{ url ('loginAdminUser') }}" method="post">
<fieldset>
<input type="hidden" name="_token" value="{{csrf_token()}}"/>
<div class="form-group">
<input class="form-control" placeholder="이메일" name="email" type="email" autofocus>
</div>
<div class="form-group">
<input class="form-control" placeholder="비밀번호" name="password" type="password" value="">
</div>
<input type="submit" name="login" value="로그인" class="btn btn-lg btn-success btn-block"/>
</fieldset>
</form>
@endsection
@include('widgets.panel', array('as'=>'login', 'header'=>true))
</div>
</div>
</div>
@stop
정보를 수정하도록한다.
6. 다음은 인증할 방식을 설정해야한다.
config / auth.php
아래와 같이 찾아서 바꿔준다.
'driver' => 'database', // 데이터베이스를 쓴다고 명시한다.
'table' => 'ADMIN_USER', // 어드민 유저 정보가 담긴 테이블 이름을 넣는다.
7. 이제 위에 table 이름을 ADMIN_USER 을 쓰기로 했다.
테이블 생성 쿼리는 아래와 같다.
-- ADMIN_USER Table Create SQL
CREATE TABLE ADMIN_USER
(
`id` INT NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` VARCHAR(100) NOT NULL COMMENT '이름',
`email` VARCHAR(100) NOT NULL COMMENT '이메일',
`password` VARCHAR(60) NOT NULL COMMENT '비밀번호',
`remember_token` VARCHAR(100) NULL COMMENT '기억하기 토큰',
PRIMARY KEY (id)
);
ALTER TABLE ADMIN_USER COMMENT '어드민 유저';
위와 같이 테이블을 만들어주는게 좋다.
id, password 필드명이 다르면, 저거 찾을 수 없다고 계속 에러가 난다. 그대로 해주는게 정신 건강에 좋다.
8. 테이블도 만들었고, 설정도 다 끝냈다. 이제 데이터베이스에 아이디, 비밀번호를 저장하고 로그인해본다. 그러면 로그인이 안될것이다.
9. 라라벨은 내부적으로 암호를 보낼때 암호화해서 보낸다고한다. 위 4번을 보면,
echo Hash::make($pwd);
라는 부분이 있다.
그 밑에 코드는 다 날리고, echo Hash::make($pwd); 을 실행하면
$2y$10$0NoGPfWZHLJsfxWNrly6kuSrLlSkX9VsyX.99AGbAQgM8LRAG072y
이런 긴 데이터가 나오는데,
이것을 데이터베이스 비밀번호에 넣어주도록한다.
10. 다시 소스 원복하고 로그인해보면 아주 잘되는것을 볼 수 있다.
p.s
참고로 데이터베이스에 `password` VARCHAR(60) 으로되어 있는데, 60자로 설정해놔야한다는 이야기를 얼핏봐서, 그렇게 설정해두었다.