안녕하세요 새로운 비디오
오늘 우리는 하나를 원한다 RESTful 로그인 API를 작성하십시오 API는 / login을 통해 액세스 할 수 있어야합니다 아이디어는이 API를 가져올 수 있다는 것입니다 앱이 ~에 전화를 건다
사용자가 있는지 확인하십시오 입력 된 데이터가 유효합니다 '예'인 경우 각각의 클라이언트는 토큰을 수신한다 다시 – 그래서 생성 된 문자열입니다 이 토큰은 추가 요청이있을 때마다 고객 예를 들어 사용자 데이터 인 경우 서버를 보냅니다 볼 수 있어야합니다
토큰이 얼마나 정확하게 생성되고 우리는 단지 그것이 체크 된 것을 볼 것이다 다음 동영상 그래서 나는 그것을 가진다 데이터베이스를 준비했다 테이블 "tbl_users"라고하며 합계가 4입니다
속성 전자 메일 주소는 여기에 있습니다 기본 키이며 사용자 이름으로 사용해야합니다 로그인에 사용됩니다 그런 다음 이름을 입력 할 수 있습니다 암호가 암호화되어 있습니다
저장 이 경우 PHP의 해시 값 기능 password_hash () date_created 정보를 통해 사용자 계정이 생성되었습니다 데이터 유형은 datetime입니다 보시다시피 테이블은 아주 간단하고 지어졌습니다
지금은 데모 용입니다 데이터베이스 용으로 좋습니다 여기 우리는 소스 텍스트의 마지막 시간 남아 있었다 그러나 나는 파일 구조가 약간 변경되었습니다 색인에 먼저 설정 파일이됩니다
참여 설정 파일에는 데이터베이스 연결 용 상수 정의 된 설정 덧붙여 말하자면, 웹 사이트를 읽으십시오 바로 여기 있습니다 종종 당신은 사용합니다
소위 마술을 통합하다 PHP 상수 "__DIR__" 이 상수는 항상 경로를 반환합니다 각각의 파일로 돌아 가기 어디에서 사용됩니다 이 경우 경로가됩니다 index
php의 음, 그럼 내가 넘겨 방금 표시된 설정 배열 SLIM 애플 리케이션 데이터베이스 연결 그런 다음 dependenciesphp에 있습니다
저장 당신은 그것을 여기에서 볼 수 있습니다 덧붙여서, 당신이 조금이라면 SLIM 웹 사이트 아래로 스크롤하십시오 여기 처음에는 이른바 컨테이너를 만들고 실제로 getContainer () 함수를 사용하십시오 이 컨테이너는이 경우 단순함을 의미합니다
"데이터베이스"에 대한 "db" 내부 그런 다음 컨테이너를 사용할 수 있습니다 설정 파일에서 구성 액세스 그리고 나는 각각의 것들을 할 수있다 데이터베이스 연결 용 상수 사용합니다 이 컨테이너를 사용하는 방법 우리는 곧 그것을 볼 수 있습니다
지금은 또 다른 것이 필요해 경로 – 로그인 경로 노선 나 또한 다른 파일에있다 outsourced에서 routes 파일에 앱 디렉토리 여기에서 볼 수 있습니다
나는 그걸 가지고있다 / home 경로와 이름을 복사했습니다 / login로 변경되었습니다 그러나 이제 POST가 생겼습니다 액세스 데이터로 인해 경로를 만듭니다
우편으로 보내야한다 얻을 수 없습니다 그래서 여기에 게시물이 있습니다 그녀의 길 안에서 나는 할 수있다 먼저 게시 매개 변수를 선택하십시오
너와 같이 나 자신을 정의 할 수있어 호출 될 API를 사용하는 경우 언젠가 공개적으로 접근 할 수있는 너는 그런 것들을해야 해 물론 적당한 형태로 문서화 그래서 나는 그것을 매개 변수 시간 "이메일"및 "비밀번호" 사용자이어야합니다 인증합니다
나는 그 때 접근 할 수있다 다음 구문을 통해 그것에 관해서 요청 개체 내가 할 수있는 기능 getParsedBody ()를 실행합니다 나에게 접근 해 준다 모든 게시 매개 변수 이 경우에는 매개 변수 "이메일"을 선택합니다
같은 것을 다시 복사하고 "암호"라고 부르십시오 다음으로, 나는 하나를 만들 것입니다 결과 어레이 이 배열에서 나는 어떤 종류의 대답을 원한다 로그인이 성공했는지 또는 없습니다
이 결과 배열은 JSON 형식을 반환합니다 있다 또한 SLIM 기능 즉 withJson 나는 뒤집을 수있다 응답 객체를 실행하십시오
당신은 PHP의 json_encode () 함수를 사용하십시오 그러나 Json은 또한 JSON 형식의 헤더 그 후 좋았어 먼저 정상적인 선택을 따른다 쿼리
여기에 단지 암호 – tbl_users 읽기 및 해시에서 해시 비록 전자 메일 주소를 기반으로합니다 우체국에서 전자 메일을 보냅니다 매개 변수 그러나 새로운 것은이 철자입니다 $ this-> db를 통해 "db"에 갈 수 있습니다 – 설정에있는 컨테이너 – 생성 된 액세스 파일
이 "db"는 컨테이너 그런데 LIMIT 1을 사용할 수도 있습니다 생략합니다 그것은 단지 하나의 신호임을 의미합니다 쿼리는 항상 하나의 레코드 만 반환합니다
배달은 전자 메일이 기본 키 그게 결과 야 변수 row_login 및에 패스워드는 변수 psw_에서 끝납니다 암호를 입력합니다 좋아, 필요해
password_verify () 만 사용합니다 메일로 확인하는 기능 에서 해시로 제출 된 비밀번호 데이터베이스가 일치합니다 그걸로 제출 된 것을 확인합니다 password_verify ()를 통한 비밀번호 같은 알고리즘을 가진 함수 암호로 해시 됨 데이터베이스 여기서 당신은 간단히 말해서 암호 로그인 API로 전송됩니다
내가 이것에 접근 할 수 있음을 의미한다 나중에 API가 필요합니다 HTTPS – 암호화 된 HTTPS 연결 – 수행해야합니다 그래도 그래 그게 효과가 우리가 먼저 기록
여기서는 첫 번째를 소개합니다 사용자 데이터가 가져 오는 쿼리 그 다음에 행진하는 땅 _ userData에 나는이 데이터를 안으로 쓴다 결과 배열 이 경우에는 error = false 이전의 오류
그 나는 토큰을 먼저 가지고있다 자리 표시 자 작성 : abc123 여기에 암호가 없습니까? 협정 else 블록으로 건너 뛰자 오류는 true이고 메시지는 다음과 같습니다 비밀번호
그것은 또한 사용자를 찾을 수 없습니다 이 경우 row_login은 비어 있습니다 나는 그걸 호출 부호로 질의 할 수있다 또한 error = true이고 이번에는 메시지 "사용자를 사용할 수 없습니다" 그래서 나
경로가 준비되어 있고 API를 호출 할 수 있습니다 그래도 POST API에서는 그렇지 않습니다 단순히 내가 그걸 좋아하지 않기 때문에 POST 매개 변수를 작성할 수 있습니다 여기에 나는 메시지를 받는다 : 어이, 그것은 POST 요청이어야합니다 이를 위해서 추가 기능이 있습니다
Firefox 및 Chrome 용 이것은 "고급 REST 클라이언트"라고합니다 클라이언트는 여기에서 찾아 낼 수있다 Chrome 웹 스토어에서 쉽게 사용할 수 있습니다 먼저 URL이 필요합니다 나는 그것을 추가 할 것이다
여기 여기 페이로드 필드에서 "양식"을 선택합니다 페이로드는 전송할 데이터입니다 우린 머리 부분에있을거야 POST가 없으므로 잘못되었습니다
전송 매개 변수 여기서 나는 단지 두 가지가있다 매개 변수 직접 입력 그래서 "이메일"과 "비밀 번호"를 만들었습니다 여기에 나는 내가 "YoutubeTest"를 가지고 있었다고 생각한다 사용
그런 다음 "보내기" 그리고 무슨 일이 일어나는 지보십시오 우리가 보는 바와 같이 우리의 REST API와 저를 작동합니다 사용자 데이터와 자리 표시 자 토큰을 반환합니다 나는 다음은 비밀번호 변경입니다 적절한 오류 메시지가 있습니다
"잘못된 암호" 사용자 인 경우 마지막을 따르지 않는다 오류 메시지 좋아, 지금까지 다음에 동영상은 훨씬 더 많을 것입니다
기능을 추가하십시오 나는 넣는다 나에게 인증 기능 토큰의 도움을 받아 검사합니다 각각의 사용자 어떤 일을 할 권리가있다 다음에 봐요!