내 응용 프로그램에 사용자 부분과/admin 부분이 있습니다. 2 가지 모델의 계정 (예 : 고객)과 관리자가 있으며 계정과 관리자를 별도로 인증해야합니다. 관리자는 계정의 일부에 액세스해서는 안되며 계정은 관리 영역에 액세스해서는 안됩니다. 저를위한 해결책이 있습니까? 아니면 사용자와 관리자를 위해 2 가지 다른 응용 프로그램을 작성한 다음 merb 1.1을 기다렸다가 어떻게 든 1 개의 응용 프로그램에 마운트해야합니까? 어떤 아이디어?Merb 인증 질문
0
A
답변
1
귀하의 질문은 나에게 매우 흥미로운 것 같습니다. 처음에는 똑같은 문제가있었습니다. 그래서, 당신이 선택할 수있는 다른 솔루션을 제안 할 수 있습니다 귀하의 애플 리케이션 구조에 따라 다릅니다.
모든 사용자는 하나 개의 클래스에 속하지만 (특수 필드가있는 경우에서는 UserClass = (같은 : 클라이언트 : 사회자 : 관리자 등) 단지 사용자 클래스를 검사, 응용 프로그램 수정의 최소가 게요 매개 변수를 컨트롤러/뷰에서 사용하는 것이 좋습니다.
모범 사례 - Merb 인증 전략을 사용하는 것이 좋습니다. 매우 유연한 메커니즘이므로 작업 할 클래스를 선택할 수 있습니다.
예를 들어 다음과 같은 두 가지 기본 전략이 있습니다. C lientAuth, AdminAuth. 둘 다 서로 다른 사용자 클래스 (클라이언트, 관리자)를 사용합니다. 모두 당신이 필요 - 사용자 정의 전략 파일을 만들고 다음과 같이 라우터에 연결 :
authenticate(ClientAuth) do
match('/profile').to(:controller => ProfileController)
end
authenticate(AdminAuth) do
match('/admin').to(:controller => AdminController)
end
을 또는 당신이 컨트롤러에서 인증을 사용할 수 있습니다 또한
class AdminController
:before ensure_authenticated, :with => [AdminAuth]
def index
... your stuff ...
end
end
, 당신도 하나의 컨트롤러를 사용할 수 있습니다
class AdminController
:before ensure_authenticated, :with => [AdminAuth, ClientAuth]
end
전략에 대해 서로 다른 인증 클래스 (Admin, Client)를 설정했기 때문에 다음과 같은 두 가지 전략을 사용하여 두 클래스의 인증을 수행 할 수 있습니다. 그것에 대해 정보를 얻을 수있을 것이다 :
- http://www.slideshare.net/hassox/merb-auth-presentation
- : session.user.class 여기
(이 객체의 클래스 이름을 찾을 수있는 기본 루비 방법은) 몇 가지 유용한 링크입니다 http://merbunity.com/tutorials/19
- http://www.slideshare.net/carllerche/merb-pluming-the-router-presentation
- http://merbivore.com/documentation/1.0/doc/rdoc/merb-auth-core-1.0/index.html?a=C00000025&name=Strategy