2013-10-06 4 views
0

Я пытаюсь выполнить аутентификацию в Restlet, где я просматриваю учетные данные на основе части URI, то есть аутентификации с использованием многопользовательской аутентификации.Restlet - использование переменных шаблона URI в Authenticator

Я не смог связать маршрутизатор для аутентификатора с маршрутизатором для доступа к ресурсам. Возможно ли это? Предположим, у меня есть Authenticator, для которого требуется переменная tenantId для поиска пользователя. Я пробовал установку, как показано ниже, чтобы заставить ее работать без успеха. Мысли?

public class MyApplication extends Application 
{ 
    public Authenticator authenticator; 

    @Override 
    public Restlet createInboundRoot() 
    { 
     Router router = new Router(getContext()); 
     router.attach("/", TraceResource.class); 
     router.attach("/{apiVersion}/{tenantId}/pathOne/{someId}", 
      ResourceOne.class); 
     router.attach("/{apiVersion}/{tenantId}/pathTwo/{someId}", 
      ResourceTwo.class); 

     authenticator.setNext(router); 

     Router authenticationRouter = new Router(getContext()); 
     authenticationRouter.attach("/{apiVersion}/{tenantId}/{remaining}", 
      authenticator).setMatchingMode(Template.MODE_STARTS_WITH); 

     return authenticationRouter; 
    } 
} 

ответ

1

Это почти правильно, вот фикс:

public class MyApplication extends Application 
{ 
    public Authenticator authenticator; 

    @Override 
    public Restlet createInboundRoot() 
    { 
     Router router = new Router(getContext()); 
     router.attach("/", TraceResource.class); 
     router.attach("/pathOne/{someId}", ResourceOne.class); 
     router.attach("/pathTwo/{someId}", ResourceTwo.class); 
     authenticator.setNext(router); 

     Router authenticationRouter = new Router(getContext()); 
     authenticationRouter.attach("/{apiVersion}/{tenantId}", 
      authenticator).setMatchingMode(Template.MODE_STARTS_WITH); 

     return authenticationRouter; 
    } 
} 
+0

Спасибо! Будет ли переменная tenantId в authenticationRouter дать мне значение «между косами» в этом случае? Или мне нужно его разобрать? – Mafuba

+1

переменная «tenantId» будет содержать оставшийся URI, включая косые черты –

Смежные вопросы