2016-10-04 3 views
0

저는 CodeIgniter를 며칠 동안 사용해 왔습니다. 초보자에게는 웹 애플리케이션을 생성하기위한 훌륭한 프레임 워크입니다.Tank auth를 사용하여 등록되지 않은 사용자로부터 콘텐츠를 보호하려면 어떻게해야합니까?

나는 로그인 시스템을 설정하기 위해 탱크 인증을 사용하고 있으며 지금까지 동일한 일을 처리했습니다.

하지만 내가 이해할 수없는 한 가지가 있습니다. 나는 탱크 인증 코드를 연구하고 봤지만이 아주 간단한 문제를 해결할 수는 없다. 등록되지 않은 사용자들로부터 나의 웹 사이트 콘텐츠를 어떻게 보호 할 수 있는가? CodeIgniter에서 사용되는 방법은 무엇입니까?

예를 들어 컨트롤러 쇼 메서드가있는 제품이 있다고 가정 해 보겠습니다. www.mywebsite.com/index.php/products/show를 입력하면 내 웹 사이트에서 모두 볼 수 있습니다. 이제 등록되지 않은 사용자가 내 제품에 액세스하는 것을 어떻게 금지합니까?

나는 이것이 가장 가능성이있는 바보 같은 질문이지만이 점에 대해서는 예의없이 이해할 수는 없다. 그것이 근본적인 Google은 답변을 가지고 있지 않지만 ... (또는 정확하게 묻는 법을 모르겠다)

답변

0

탱크 인증이 올바르게 설치되고 설정되었다고 가정 할 때, 로그인 화면으로 누군가를 리디렉션 할 수 있습니다. 특정 컨트롤러 기능을 위해 이미 로그인되었습니다.

if (!$this->tank_auth->is_logged_in()) redirect('auth/login'); 

당신은 다른 사용자가 자리를 비울 리디렉션됩니다 있기 때문에 사용자 만 로그인을 보장하는 함수의 시작에, 그것을로드 할 수 사용하는 경우. 마찬가지로, 전체 컨트롤러를 잠그고 자한다면, 그냥 생성자에 배치하십시오.

탱크 인증과 함께 제공되는 환영 컨트롤러는 로그인 한 사용자 만 "지금 로그인 한 상태"페이지를 볼 수 있기 때문에 좋은 예입니다.

+0

감사합니다. 훌륭한 답변입니다. 그냥 확인하십시오 : 사용자가 로그인 한 경우에만 "제품"을 표시 할 홈 페이지 상단에 내 탐색 메뉴가 필요합니다. 헤더보기에서 nav 메뉴를 만들었고 정적 페이지를 처리하기위한 컨트롤러 페이지가 있습니다. 두 개의 view header_logged와 header_notlogged를 만들고, '을 추가해야 함을 의미합니까? if (! $ this-> tank_auth-> is_logged_in()) { $ this-> load-> view ('templates/header_logged', $ 데이터); } else { $ this-> load-> view ('templates/header_notlogged', $ data); }' 내 제어 페이지에? –

+0

당신은 컨트롤러 스타일의 로직을 뷰 밖으로 유지하는 것에 대해 엄격하게하고 싶다면 그렇게 할 수 있습니다.하지만 뷰의 내부에 if 문을 넣는 유스 케이스가 될 것입니다. 그런 메뉴에 약간의 변화. 메뉴에 Products 항목을 추가 할 때마다 제품 메뉴 항목 * 에 대한 tank_auth-> is_logged_in() {?> * HTML) –

관련 문제