0

Я следую за "isRegistered" api от this Пример кода. Я не понял, как мы получаем номер телефона из контекста безопасности.Как ibm-mobile сначала получает номер мобильного телефона из контекста безопасности?

API-интерфейс, который я хочу использовать это:

@Path("/isRegistered") 
@GET 
@Produces("application/json") 
@OAuthSecurity(enabled = true) 
@ApiOperation(value = "Check if a phone number is registered", 
     notes = "Check if a phone number is registered", 
     httpMethod = "GET", 
     response = Boolean.class 
) 
@ApiResponses(value = { 
     @ApiResponse(code = 200, message = "OK", 
       response = String.class), 
     @ApiResponse(code = 401, message = "Not Authorized", 
       response = String.class), 
     @ApiResponse(code = 500, message = "Cannot check if phone number is registered", 
       response = String.class) 
}) 

public Boolean isRegistered() { 
    //Getting client data from the security context 
    ClientData clientData = securityContext.getClientRegistrationData(); 
    if (clientData == null) { 
     throw new InternalServerErrorException("This check allowed only from a mobile device."); 
    } 

    String number = clientData.getProtectedAttributes().get(SMSOTPSecurityCheck.PHONE_NUMBER); 
    return number != null && !number.trim().equals(""); 
} 

Как контекст безопасности у клиента номер телефона?

+0

Просьба включить код в вопросный орган – mhatch

ответ

0

В этом примере также есть проект клиента. Пожалуйста, обратитесь к полному образцу.

В стороне клиента логики here, пользователю предлагается указать номер телефона, который посылается на сервер в вызове адаптера:

MainViewController.codeDialog("Phone Number", message: "Please provide your phone number",isCode: true) { (phone, ok) -> Void in 
if ok { 
     let resourseRequest = WLResourceRequest(URL: NSURL(string:"/adapters/smsOtp/phone/register/\(phone)")!, method:"POST") 
..... 

Теперь в адаптер code путь @Path ("/ зарегистрироваться/{PHONENUMBER} ") обратите внимание на следующий код:

clientData.getProtectedAttributes().put(SMSOTPSecurityCheck.PHONE_NUMBER, phoneNumber); 
    securityContext.storeClientRegistrationData(clientData); 

Это как номер телефона сделал это в контексте безопасности.

Запустите образец и используйте такой инструмент, как Wireshark, для анализа потока данных между клиентом и сервером.

+0

Я хочу зарегистрировать номер мобильного телефона только в том случае, если он не зарегистрирован. Итак, чтобы проверить, зарегистрирован ли он, я сначала хочу позвонить «isRegistered» api. Итак, как «isRegistered» api получает номер мобильного телефона? Например, мой файл apk установлен на двух мобильных устройствах. Один мобильный номер зарегистрирован на сервере, а другой нет. Как сервер различает два устройства, когда я не отправляю номер мобильного телефона? Как он узнает, откуда он звонил? – dhiraka

+0

Поскольку полный проект доступен вам, я предлагаю вам попробовать его сначала, прежде чем задавать все вопросы. Wireshark - отличный инструмент, который покажет вам, какие параметры достигают сервера и на каком сервере отвечает. –