대부분의 프로젝트는 무에서 유를 만드는게 아니라 기존에 있던 서비스를 업그레이드 하거나 차세대로 가거나 하는 경우가 대부분이다. 그래서 라라벨을 적용할때도 기존에 사용하던 회원 테이블을 그대로 가져다 써야 하는 경우가 있다.
그런데 이게 왜 문제가 되냐하면 라라벨에 있는 Auth에서 사용하는 비밀번호 암호화가 일반적인 SHA512가 아니라는 점이다.
그래서 기존에 회원 테이블에 있는 정보를 가지고는 라라벨의 Auth를 이용해서 로그인을 할 수 가 없다. 하지만 회원들한테 비밀번호를 알려달라고 해서 마이그레이션을 할수도 없는 노릇이니 이런 경우에 어떻게 해야할까?
답은 정해져 있다. 라라벨 Auth의 암호화를 SHA512로 바꾸면 된다. 하지만 그것도 쉽지 않아서 바꾸는게 아니고 피해간다고 보는 것이 맞을 것이다.
우선 기존 사용하던 member 테이블을 라라벨에 모델로 등록한다.
$php artisan generate:modelfromtable --table=member
그러면 아래와 같이 모델 파일이 생성된다.
/app/Models/Member.php
대충 이렇게 만들어 진다. 아래 부분은 잘랐다.
그다음에 이제 이 Member.php를 auth에서 사용하겠다고 config를 수정해야 한다.
/config/auth.php
위와 같이 model부분을 User에서 Member로 수정해준다.
그리고 로그인을 처리할 컨트롤러를 만든다. 명령어로 만들거나 기존 다른 컨트롤러를 가져와서 만들어도 된다.
/app/Http/Controllers/LoginController.php
login 부분을 잘 보자. Hash를 이용해서 하는건 라라벨 방식이지만 기존 member 테이블이 SHA512로 돼 있으니 의미가 없다. 그래서 비밀번호를 받아서 sha512로 바꾸어 준다.
그리고 기존 member 테이블에서 비밀번호 컬럼이 passwd이기때문에 이렇게 해 주었다. 보통 라라벨에서는 password로 돼 있다.
참고로 remember 기능을 사용하려면 member 테이블에 remember_token 컬럼을 추가해 주어야 한다.(컬럼 한개 정돈 추가할 수 있자나)
$ismember 변수에 값이 있으면 Auth에 담아서 로그인 처리를 해준다. 그러나 이렇게 하면 오류가 난다. 한가지 더 수정해야 한다. member 모델을 수정해야 한다.
/app/Models/Member.php
이렇게 Authenticatable 로 바꾸어 주어야 한다.
이제 다시 해보면 로그인 처리가 될 것이다.
이번엔 사용자 화면에서 로그인 처리를 해보자.
이렇게 로그인했으면 이메일과 로그아웃 버튼을 보여주고 로그인을 안했으면 로그인 버튼을 보이도록 해주었다.
라라벨을 하다보면 이게 php가 맞나라는 생각이 자꾸 든다. 그래도 재미는 있다...쿨럭...
'PHP' 카테고리의 다른 글
[라라벨]섬머노트(summernote) 웹에디터 적용하기 #1 iframe으로 (0) | 2024.06.12 |
---|---|
[라라벨]두 개 이상의 order by , ifnull 같은 함수 사용할 때 사용하는 orderByRaw (0) | 2024.06.05 |
[라라벨]기존 테이블을 라라벨 모델로 등록하기 #2 (0) | 2024.05.24 |
[라라벨]기존 테이블을 라라벨 모델로 등록하기 #1 (0) | 2024.05.23 |
[PHP]Jenkins(젠킨스)없이 github(깃허브)만으로 서버에 배포하기 #4 (0) | 2024.05.21 |