ServiceStack 기반 웹 서비스 응용 프로그램에서 이미 사용자 정의 인증 공급자를 사용하고 있습니다.다중 점유를위한 ServiceStack의 사용자 정의 인증 요청
Authenticate 메서드를 재정의하고 여러 백엔드 테넌트 데이터베이스 중 하나에 대해 내 사용자의 유효성을 검사합니다. 현재 API 키를 데이터베이스 문자열과 비교하여 테넌트 데이터베이스를 결정합니다.
public override object Authenticate(
IServiceBase authService,
IAuthSession session,
Auth request) // <- custom object here, MyCustomAuth request
{
// ...
}
각 응용 프로그램은 하나의 세입자 (임차인/고객이 자신의 응용 프로그램을 구축하고 API 키를 사용할 수 있습니다)입니다 때 작동합니다. 앞으로 나는 멀티 테넌트 모바일 애플리케이션을 만들고 싶습니다. 따라서 각 사용자가 입력 할 것으로 예상 할 수 없기 때문에 API 키 방법을 사용할 수 없으므로 어느 테넌트가 응용 프로그램을 사용하고 있는지 확인할 수 없습니다.
로그인 할 때 사용자가 제공 한 TenantId를 포함 할 수 있도록 Auth 개체를 변경하려고합니다. 그러나, 어떻게 그 개체를 사용자 정의 할 수 있는지 볼 수 없습니다.
어쨌든 Auth 객체를 사용자 정의 할 수 있습니까? 아니면 대체 솔루션을 찾아야합니까?
또는client.Post(new Authenticate {
...
Meta = new Dictionary<string,string> {
{"TenantId", tenantId},
}
}
당신이 추가 정보를 보낼 수 있습니다 : 예
'Meta' 속성은 v3.9.x 이후 버전입니까? 또한 동일한 3.9.x 버전 (.48)의 경우 authService.RequestContext.Get()를 수행해야한다고 가정합니다. Items [ "TenantId"]'? –
Junto
@Junto Authenticate.Meta가 v4에 추가되었습니다. 그것은 v3에서 현재 요청에 액세스하는 방법이지만, QueryString을 찾으려면 여전히 찾고 싶을 것입니다. – mythz
감사합니다. :) – Junto