2013-12-09 5 views
1

나는 다른 몇몇 사이트에서 codeigniter를 사용하기 위해 사용했던 지속적인 로그인 프로세스를 업데이트하고 있으며이 상황을 처리하는 가장 좋은 방법에 대한 의견을 듣고 싶거나 내가 간과 할 수있는 것이있는 경우이를 원합니다.Codeigniter 사용자 지정 라이브러리 또는 다른 솔루션?

나는 지금까지 사용자가 이미 로그인했는지 (codeigniters 세션 라이브러리를 사용하여) 로그인했는지 확인하기 위해 컨트롤러 클래스를 확장 한 다음 사용자가 로그인하지 않은 경우 해당 컨트롤러가 있는지 확인하려고합니다. 영구적 인 쿠키가 컴퓨터에 저장됩니다. 그들이 그렇다면 임시 비밀번호로 사용자를 로깅하는 과정을 밟습니다 (임시 비밀번호를 재설정하고 보안상의 이유로 영구 쿠키를 다시 만드는 것과 함께). 이것은 모두 좋다.

이제 제 질문은 적절한 구조와 코드 재사용 가능성에 관한 것입니다. 사용자가 로그인 버튼을 클릭하여 로그인 할 때마다 위에 설명 된 프로세스에서 사용 된 것과 동일한 기능 중 일부가 필요합니다. 현재이 문제에 대한 나의 해결책은 사용자 인증/등록/영구 로그인/로그 인/로그 아웃과 관련된 모든 기능을 포함하는 커스텀 라이브러리를 생성 한 다음 그 라이브러리가 기능이있는 곳에서 라이브러리를 호출하는 것입니다 필요합니다.

내게 붉은 깃발을 던지고있는 것, 그리고 왜 내가 지금이 초안을 작성하는지는이 라이브러리 내에서 데이터를 조작/가져 오기 위해 다양한 모델을 호출해야한다는 것입니다. 나는 이것이 가능하다는 것을 안다. 그러나 그렇게하는 것은 나쁜 습관으로 간주 될 것인가? 이 시나리오에 대한 해결책이 누락 되었습니까?

+0

내 솔루션 도움? –

+1

매우 그렇습니다. 나는 그것을 내 게시물의 답으로 받아 들였다. – commanderZiltoid

답변

1

사용자 정의 라이브러리 내의 다른 라이브러리 및 모델을 호출하기에 완벽하게 좋습니다. 그러나 모델/라이브러리를 호출하고 설정하려면 라이브러리 내에서 보통 $this (즉 this-> load-> model ('some-model'))을 사용할 수 없습니다.

$CI을 사용해야합니다. 그렇게하기 위해서, 함수의 시작 부분에 변수를 설정하십시오. (내가 기억하는 것으로부터, 이것은 함수가 아니라 구조체에 있어야합니다). 그런 다음 컨트롤러에서와 같은 방식으로 모델/라이브러리를 호출 할 수 있습니다. 예 :

<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); 

class Login_auth { 

    function __construct() { 

    } 

    function run() { 

     $CI =& get_instance(); 

     $CI->load->model('some-model'); 
     $CI->load->library('some-library'); 

     .... 

    } 
} 
0

라이브러리를 통해 데이터를 조작하고 얻는 것은 나쁜 습관이 아닙니다. 라이브러리는 codeigniter에 대한 자유 통치의 일종이며, 플러그 앤 플레이로되어있어 그 내부에서 모든 codeigniters 기능을 사용할 수 있습니다.

관련 문제