2013-09-24 3 views
5

현재 진행중인 프로젝트는 관리 콘솔과 일반 프론트 엔드에서 분리되어 있습니다. 프론트 엔드와 백엔드 모두 동일한 Laravel 인스턴스에 있습니다.Laravel 4의 여러 인증 세션

프론트 엔드에서 프론트 엔드 전용으로 작동하는 사용자 로그인 시스템을 만들려고합니다. 그것은 다른 테이블과 모델을 사용하며 관리자에 대한 사용자 모델에 비해 다른 관계가 있습니다.

내가 알 수없는 것은 두 시스템 모두에서 Laravel Auth 클래스를 사용하는 방법입니다. 논리적으로 Auth는 하나의 설정 파일을 사용합니다.

앞으로 가져온 한 가지 해결책은 다른 테이블과 모델을 사용하지 않고 구별을 위해 acl을 사용하는 것입니다. 그러나 나는 이런 식으로 프론트 엔드와 백엔드를 섞어 놓는 것을 좋아하지 않는다. 특히 프런트 엔드 사용자에게 이전에 고유 한 모든 필드와 관계를 관리자 사용자 모델에 갑자기 부여해야한다는 것을 의미하기 때문에 특히 그렇습니다.

그냥 올바른 방법으로 보이지 않습니다. 나는 다른 인증 시스템으로 전환하거나 관리자를 자체 configs 패키지로 구분할 수 있지만 프로젝트의 범위는 그러한 시간 낭비 변경을 허용하지 않습니다.

당신이 제공 할 수있는 아이디어를 환영합니다.

+1

이 http://stackoverflow.com/questions/18785754/laravel-4-need-to-auth-with-2-different-tables이 – cyvvilek

답변

5

이 내가 너무 최근에 발생하는 문제입니다. 완전히 분리 된 환경은 그리 쉽지 않았습니다. 특히 이미 개발 및 프로덕션 환경이있는 경우.

그러나이 문제를 해결하기 위해 패키지를 만드는 데 약간의 시간을 할애했지만 https://github.com/ollieread/multiauth에서 찾을 수 있습니다. 패키지 자체는 본질적으로 그것의 여러 인스턴스를 사용할 수 있도록 인증을위한 팩토리 클래스입니다, 그래서 당신과 같이 액세스 :

Auth::admin()->check(); 
Auth::user()->check(); 
Auth::whatever()->check(); 

I 패키지는 당신이나이 방법을 찾고 다른 사람을 도움이되기를 바랍니다.

2

확실하지 않지만 유용 할 수 있습니다. 왜 관리자를위한 별도의 환경을 만들려고하지 마십시오. 그리고 나서 프로덕션을위한 app/config/admin/session.php와 app/config/session.php (기본 환경)를 갖게 될 것입니다.

설치하는 방법 환경 http://andrewelkins.com/programming/php/how-to-set-laravel-4-environments/

당신은 여기에서 볼 수 있습니다하지만 그것은 단지 생각 말했듯이, 나는 그것의 아주 확실하지 않다 :

+0

환경 명확하게 여기 길을 가야하는 것입니다 helful 수 있습니다. admin.yoursite.com을 설정하고 그에 따라 설정 파일을 변경하십시오. 여기서는 사용자 정의 메서드를 역할에 특정한 사용자 클래스에 추가하지 않는다고 가정합니다. – Makita

1

다른 사용자 엔터티가 거의 동일한 인터페이스를 볼 필요가 없다면 앱을 두 개의 코드베이스로 나누는 것이 좋습니다. 그들은 여전히 ​​동일한 데이터베이스를 분명히 쿼리합니다.

이 방법으로 인증 문제가 해결 될뿐만 아니라 코드 유지 관리가 훨씬 쉬워집니다. 예를 들어, 관리 콘솔에 업데이트를 푸시하는 동안 (아마도) 더 중요한 프론트 엔드를 유지하고 실행하면서 해당 애플리케이션을 유지 관리 모드로두기 만하면됩니다.

+0

이것은 실제로 매우 좋은 지적입니다.우리는이 코드베이스를 분할하는 아이디어를 무시했습니다. 왜냐하면 이점은 우리의 경우에 대한 우려보다 중요하기 때문입니다. 그러나 별도의 유지 관리 모드에 대한 요점은 규모를 알릴 수 있습니다. –