이 강의로 돌아와서 재미있는 새로운 자료를 볼 것입니다.
우리는 사용자 모델을 우리가 캠프 그라운드에서 다루었던 인증과 결합하여 사용자가 생성하지 않은 캠프 그라운드를 삭제할 수 없도록하거나 사용자가 캠프 그라운드를 편집 할 수 없도록합니다 만들지 않았다.
이것은 승인이라고하는 것입니다.
그래서 인증과 인증이 다른 것은 누군가가 자신이 말하는 사람인지 알아내는 것입니다.
일단 누군가가 누구인지 알고 있으면 권한이 부여됩니다.
당신은 그들이 무엇을 할 수 있는지 알아 낸다.
그래서 권한으로 생각하십시오.
우리의 응용 프로그램에서 보안 허가를받은 사람이 무엇인지 누군가가 무엇을 할 수 있습니까?
네가 같은 아이를 갖지 않으면 캠프장을 소유하지 않으면. 캠프장 작성자가 업데이트하거나 삭제할 수 없으므로
자, 간단하게 시작해서 캠프장을 소유하지 않는 한 편집 양식을 줄 수 없도록하십시오.
이제 우리의 캠프장 길로 가자.
그리고 우리가하고 싶은 일은 캠프장 루트에 가거나 시도해보고, 업데이트하고, 결국 삭제할 것입니다. 세 가지를 모두 삭제하면, 우리가 방금 확인한 것과 동일한 논리를 가질 필요가 있습니다.
현재 사용자의 I.D. 해당 캠프장의 작성자 ID와 일치해야합니다.
따라서 이것이 우리의 캠프 그라운드 모델을 끌어 올린 것과 같은 우리의 데이터 구조처럼 보입니다.
우리는 각 캠프장에 대한 저자가 있으며, I.D. 그건 아이디가 될거야. 사용자에 대해 그것은 특정 사용자의 객체 ID를 참조한다. 그런 다음 우리에게는 개체 ID가있는 사용자가 있습니다. 여기에 지정되어 있지는 않지만 모든 사용자는 ID가 있습니다. 현재 로그인 한 사용자 인 I.D.를 비교할 것입니다. 캠프장 작성자의 도트 ID로 이동하면 우리는 그 자리에 올라갈 수 있습니다.
우리가 거기서 시작할거야.
그리고 우리가하고 싶은 첫 번째 작업은 사용자가 전혀 로그인하지 않은 사람입니다.
그러면 우리는 여름을 방향 전환 할 것입니다.
사용자가 로그인 한 경우 사용자가 캠프장을 소유하고 있습니까?
그렇다면 우리는 사용자가이 코드를 실행하여 내 ID를 찾고 모든 것을 삭제하도록 할 것입니다.
그렇지 않으면 리디렉션됩니다.
그럼 누군가가 로그인했는지 확인하기 위해이 내용을 채우자.
요청이 인증되면 그냥 쓸 수 있습니다.
여기에서 이미 정의한 중간 부분을 사용할 수도 있습니다.
잠시 후에 왜 우리가 그렇게하지 않을 지 보여 드리겠습니다.
짧은 대답은 우리가 우리 자신의 미들웨어를 정의하고 있다는 것입니다.
그래서 우리는이 미들웨어 대신에 그 기능을 결합 할 것입니다.
따라서 요청이 인증되면 그럴 경우 우리는 가야합니다.
그렇지 않은 경우 시작하려면 일정한 로그를 작성해 보겠습니다.
로그인하려면 로그인해야합니다. 그러면 Google에서 응답을 보내 드리겠습니다.
그리고 send를 보내서 응답을 보내십시오. 실제로 보내 드리겠습니다.
따라서 우리가 로그인하지 않았다는 것을 알게되면 가장 먼저 작동 할 것입니다.
이 코드를 if 문 안에 복사하고 적절하게 들여 쓰기하자.
승인.
그래서 우리는 로그인해야합니다.
우리는 이미이 작업을 수행하기 위해 코드를 작성했습니다.
그래서 당신은 제가 우리가 그런 종류의 이상한 방법으로 이것에 대해 생각할 것입니다.
그러나 잠시 후에 당신이 보게 될 것입니다.
그래도 그것을 테스트 해 봅시다.
저장을 시작하여 서버를 시작하십시오.
그리고 내가 시작할 때 나는 로그인하지 않았다.
아무도 로그인하지 않았습니다.
그래서 내가 그것을 시도하고 그것을 슬래시로 간다면 그것은 당신이 로그인해야 할 필요가 있다고 말해줍니다.
그래서 우리 첫 부분은 잘 작동합니다.
그런 다음 우리가 잠겨 있으면 우리는 여기서 확인할 다른 진술을 여기서 보게 될 것입니다.
사용자가 캠프장을 소유하고 있습니까?
우리가 할 수있는 방법은 매우 간단합니다.
우리가해야 할 첫 번째 일은 우리가 이미 여기에서했던 캠프장을 찾는 것입니다.
그리고 일단 우리가 그것을 발견하면 우리는 해당 캠프장에서 저자의 ID가 해당 사용자를 요청하는 현재 사용자와 일치하는지 확인해야합니다.
그럼 우린 가야 돼.
여기 내부는 실제로 캠프장에서 사용자를 수행하는 곳입니다.
오류가 없는지 확인한 다음 첫 번째 비트를 검사하여 오류가 없는지 확인합니다.
캠프장에있는 사용자는 캠프장을 발견했기 때문에 존재합니까? 그렇다면 우리는 if 문을 사용하고 B는 캠프장 점 작성자 ID를 사용합니다. 그렇게 할 수 있다고 생각할 수도 있습니다.
같음은 같음입니다.
해당 사용자에게 밑줄 ID를 요청하십시오.
그럼 내가 방금 내게 무슨 말인지 알려주 연락처 블로그 캠프장 저자 생각 ID를 누른 다음 사용자가 밑줄 ID를 그 로그 요청을 취소 할 것입니다.
그래서 if 문을 주석 처리하십시오.
그래서 우리는이 두 줄을 보게 될 것입니다.
내가 로그인하려고 시도하지 않고 지금 새로 고침하고 새로 고침하면 오류가 발생합니다.
하지만 지금 로그인하면 Potato Head에 로그인 한 다음 화강암 슬래시로 돌아갑니다.
문제가있다.
보자 것 같은데.
어리석은 곳이었고 아서 캠프장에서 캠프장처럼 취소하려하지 않았습니다.
캠프장을 찾았 어.
그래서 다시 서버를 다시 시작하겠습니다.
처음으로 우리는 신선합니다.
당신은 당신이 아직도 로그인해야한다고 말해 줄 것을 압니다.
그래서 다시 감자 헤드에 로그인합니다.
암호.
승인.
이제 시도해 보니 여기에서 볼 수있는 것을 살펴보십시오.
우리가 인쇄하는 첫 번째 일은 이렇게 보입니다.
그래서 그것은 캠프장 Arthur ID에서 발견되었습니다. 그런 다음 사용자 데이터 I.D.를 요청합니다. 그리고 그들은 그들이 똑같은 것처럼 보입니다.
그리고 그들이 인쇄 될 때 그들은 동일합니다.
그러나 사실은 배후가 실제로 같지 않습니다. 사용자 아이디의 밑줄 ID는 문자열입니다. campground 작성자 도트 ID는 몽구스 객체입니다.
그리고 이것은 까다로운 것입니다.
나는 그것을 잊어 버린다. 때때로 잊어 버린다. 당신이 디버깅하려고 할 때 똑같이 보일 것이기 때문에 실망 스럽다. 그러나 진실은 처음에는 몽구스 객체라는 문자열이 아니다.
우리가 그걸 인쇄 했어.
우리는 문자열을 보았지만 그것은 단지 두 문자열 버전입니다.
뒤에는 문자열이 아닙니다.
그리고 이것은 문자열입니다.
그래서 우리가 그것들을 비교할 때 그것은 효과가 없을 것입니다.
그래서 그들을 triple equals 나 double equals와 비교하는 대신에 우리가 대신 할 수있는 것은 몽구스가이 목적을 위해 우리에게주는 방법을 사용하는 것입니다.
그래서 우리가하는 일은 캠프장을 점검하는 대신 IF 문장을 쓰는 것입니다.
작성자 Dodd ID 트리플은 사용자 ID에서 요청을 같습니다.
우리는 점이 같음을 사용합니다.
우리는 거기에 갈.
그리고 지금 우리의 IF 성명서는 이것이 캠프장에서 다시 발견 될 필요가 있다는 사실을 제외하고는 효과가 있습니다.
따라서 경로를 기반으로하는 ID로 특정 발견 된 캠프장의 작성자 ID가 현재 로그인 한 사용자 ID와 같은지 확인합니다.
그럴 경우 우리는 한 가지를 할 것입니다.
그렇지 않으면 우리는 다른 것을 할 것입니다.
그렇다면 여기에서 우리가 할 것입니다. 발견 된 캠프장과 함께 캠프장 편집 페이지의 캠프장 페이지를 렌더링하십시오.
그렇지 않으면 우리는 휴식을 취할 것입니다.
그걸 할 수있는 권한이 없다는 사실은 결국 변경 될 것입니다. 그렇지 않으면 단지 빨간 점이 될뿐만 아니라 실제 메시지가 표시됩니다.
그래서 우리의 응용 프로그램에 가보려고하자 쇼 페이지에 첫 번째 일은 내가 지금 시도하고 그것을 편집 할 경우 로그인해야합니다.
이제 로그인하거나 감자 머리가 아닌 다른 사람으로 가입하면 토마토 머리를 할 것이므로 잘만 보일 것입니다.
우리가 간다. 너는 그 일을 할 권한이 없다.
이제 우리가 돌아가서 로그 아웃 한 다음 감자 헤드로 다시 로그인하고 다시 시도하면 시도하고 편집합니다.
나는 허락을 받았어.
그리고 나는 여기서 끝납니다.
그래서 효과가 있습니다.
어느 쪽이 위대한가.
이제 우리는 실제로 이것을 리팩토링하여 별도의 함수로 만듭니다.
이 논리의 대부분은 그것을 무언가라고 부를 것입니다.
사용자 캠프장을 확인하거나 기본적으로 확인중인 캠프 그라운드 사용자에게 현재 로그인 한 사용자가이 특정 캠프장과 일치하는지 확인하십시오.
미들웨어로 옮겨야하는 이유는 편집 할 때 사용하기 때문입니다.
우리는 또한 그것을 업데이트 할 때 사용하기를 원합니다.
로그인하지 않은 사용자가 요청을 보낼 수 없도록하고 싶습니다.
그래서 다시 브라우저를 사용합니다.
실제로 시각적으로 데이터를 보내도록 업데이트를 얻는 유일한 방법은이 양식을 사용하는 것입니다.
우편 배달부는 우편 배달부에서 요청을 보낼 수 있으며 인증을받지 못했습니다.
그래서 우리는 여기서 같은 논리를 원하고 삭제를 위해서 같은 것을하고 싶습니다.
따라서 로그인하지 않은 상태에서 캠프장을 삭제할 수 없도록해야합니다.
그리고 당신이 그것을 소유하지 않는다면.
이제 우리는이 코드를 복사 할 미들웨어를 작성합니다.
나는 거기에 남겨 두겠다. 그러나 우리는 다른 미들웨어로 지금은 내려갈 것이다.
그런데 마지막으로 캠프장 소유권을 확인하는 것이 좋습니다.
그런 다음이 코드를 붙여 넣습니다. 여기서는 약간의 작업을 수행 할 것입니다.
하지만 최종 목표는 편집시 미들웨어를 추가하여 캠프장 소유권을 확인할 수 있어야한다는 것입니다.
우리는 그것을 업데이트 할 수 있어야합니다.
그리고 삭제에도 불구하고 우리는 그걸로 시작할 것이고 우리가하고 싶은 것은 확인입니다.
먼저 요청 응답을 추가하고 다음에 미들웨어가 요청 응답을 설정하도록 기억해야합니다.
따라서 사용자가 현재 로그인 한 경우
우리가 휴식을 취하는 것보다 오히려 로그인하지 않으면 계속 움직여 라.
지금은 식당 리디렉션을 할 예정이며 아직 보지 못했습니다.
우리는 redstart 리디렉션을 다시 할 수 있으며, 사용자가 가장 많이 왔던 곳으로 다시 이동합니다.
이전 페이지에서 곧 메시지를 보낼 수있는 방법을 알려 드리겠습니다.
글쎄, 우리가 보내려는 메시지는 당신이 로그인하지 않았거나 그렇게 할 수 있어야만합니다. 그러나 우리는 지금 당장 그것을 남겨두고 있습니다.
그리고 나서 그들이 로그인하면 우리는 캠프장을 찾을 것입니다.
오류가 발생하면 다시 리디렉션됩니다.
이 오류는 캠프 그라운드가 어떤 이유로 발견되지 않거나 데이터베이스가 연결되지 않았거나 캠프 그라운드가 요청 사용자 ID와 일치하는 경우 일반적으로 우리가 실제로 볼 수없는 이상한 것인 경우에 발생합니다.
따라서 미들웨어가 편집을 렌더링하기를 원하지 않기 때문에 같은 장소에있는 사용자가이 사이트를 소유하지 않고 편집하면 나머지 부분의 코드로 이동하거나 코드로 이동합니다. 업데이트 또는 편집
이것이 바로 우리가 다음에 할 일입니다.
그렇지 않은 경우 소유주가 소유하지 않으면 rez 리다이렉션을 수행합니다.
큰.
이제 이것을 저장해 보도록하겠습니다. 여기서 편집 경로를 업데이트 할 것입니다.
우리는 이것을 많이 다듬을 수 있습니다. 그래서 우리는 캠프장을 찾고 싶습니다. 우리가 할 수있는 모든 것은 캠프장을 찾으면 그것을 점검 할 필요가 없다는 것입니다. 중간에 우리가하고 있기 때문에 더 이상 일치합니다. 우리가 원하는 것은 캠프장에서이 모든 것을 제거 할 수 있다는 것입니다.
거의 모든 Office 형식에서이 형식이 올바르게 나타나므로 조금만 빠져 나옵니다.
우리는 거기에 갈.
그래서 우리가 Scheck의 캠프장 소유율을 여기에 추가 했으므로 우리가 지금하고있는 것은 캠프 그라운드 소유권을 이미 확인했다는 것입니다.
그렇지 않으면 문제가 발생하면 우리는 오류가 발생하는 것을 보았을 것입니다. 여기에 작은 구문 오류가 있습니다. 여기서 어떻게 든 내 함수 선언을 삭제하고 오류를 처리하지 않는다고 불평 할 수 있습니다. 우리가 처리 할 수 ​​있습니다.
그러나 우리가이 지점에 도달하면 PI ID를 찾는 데 오류가 없어야합니다. 왜냐하면 여기에서 PI ID를 찾았 기 때문입니다.
그리고 그것이 여기에서 작동한다면 어쨌든 우리는 잘되어야합니다.
그럼 우리가 어떤 문제가 있는지 알아 보도록하겠습니다.
기본적으로 우리는 코드를 별도의 함수로 옮겼습니다.
그리고 우리가 올바른 핸들러에 도달하기 전에 미들웨어가 호출된다는 것을 기억하십시오.
승인.
그러니 한번 시도해 봅시다.
먼저 돌아가서 편집을 클릭 해 봅시다.
나는 로그인하지 않았다.