2017-02-23 68 views
0

我正在使用Angular js前端應用程序和Web API後端。我想在前端應用程序中使用google recaptcha。通過引用以下URL可以顯示小部件。 https://developers.google.com/recaptcha/docs/display。本文檔不討論使用密鑰進行服務器端驗證。但我已經注意到一些asp.net開發人員使用服務器端實現來驗證谷歌recaptcha與密鑰的響應。我是否需要使用密鑰進行服務器端驗證,以及與角度和Web API有關的最佳方法是什麼?使用谷歌recaptcha與Angular和WebAPI

回答

0

是的,您需要進行服務器端驗證,否則您未經身份驗證的API端點不受通過您的網站進行直接調用的保護。

的解決方案是很直盼着在這裏詳細描述: https://developers.google.com/recaptcha/docs/verify

但是,這將驗證該網站給出的g-recaptcha-response的方法是這樣的一個非常簡單的例子:

public bool Validate(string encodedResponse) 
    { 
     if (string.IsNullOrEmpty(encodedResponse)) return false; 

     var secret = **your secret**; 
     if (string.IsNullOrEmpty(secret)) return false; 

     var client = new System.Net.WebClient(); 

     var googleReply = client.DownloadString(
      $"https://www.google.com/recaptcha/api/siteverify?secret={secret}&response={encodedResponse}"); 

     return JsonConvert.DeserializeObject<RecaptchaResponse>(googleReply).Success; 
    } 

RecaptchaResponse是一個簡單的類,我們看起來像這樣:

public class RecaptchaResponse 
{ 
    [JsonProperty("success")] 
    public bool Success { get; set; } 

    [JsonProperty("error-codes")] 
    public IEnumerable<string> ErrorCodes { get; set; } 

    [JsonProperty("challenge_ts")] 
    public DateTime ChallengeTs { get; set; } 

    [JsonProperty("hostname")] 
    public string Hostname { get; set; } 
}