2017-11-11 29 views
0

ログインフォームにCSRFトークンを持つユーザーを自分のWebサイトにログします。私はIOS上でSwiftとAlamofireを使用しています。ここでAlamofire要求パラメータにCSRFトークンを渡す

は、フォームのコードです:

    <form id="login-form" class="body" action="login" method="post"> 

           <div class="form-group label-floating"> 
            <label class="control-label" for="username">Identifiant</label> 
            <input id="username" type="text" name="username" class="form-control" required/> 
           </div> 

           <div class="form-group label-floating"> 
            <label class="control-label" for="password">Mot de passe</label> 
            <input id="password" type="password" name="password" class="form-control" 
              required/> 
           </div> 

           <div class="footer"> 
                     <div class="col-md-offset-3 col-md-6"> 
             <input type="hidden" id="csrf_token" name="_csrf" 
               value="7cf3b95d-1310-4d00-b1b2-7040340b12e6"/> 
             <button type="submit" class="btn btn-lg btn-primary btn-block"> 
              Connexion 
             </button> 
            </div> 
           </div> 
          </form> 

私はCSRFトークンを返す関数を作成しました。次に、ユーザーの資格情報とCSRFトークンをログに記録する別の関数を呼び出します。ここで

は、この機能である:

func login(token: String, completion: @escaping (_ success: Bool) -> Void) { 

     let customerURL = "https://mywebsite.com/uaa/login" 
     let user = "username" 
     let password = "password" 
     let parameters = [ "username" : user, "password" : password, "Authorization" : token] 

     Alamofire.request(customerURL, method: .post, parameters: parameters, encoding: JSONEncoding.default) 

      .responseString { response in 

       switch response.result { 
       case .success: 
        print("Validation Successful") 
        if let JSON = response.result.value { 
         print(JSON) 
        } 
       case .failure(let error): 
        print(error) 

       } 
     } 
    } 

しかし、私は私のアプリを実行すると、ここで私が得るものです:

{"timestamp":1510425797543,"status":403,"error":"Forbidden","message":"Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-XSRF-TOKEN'.","path":"/uaa/login"} 

任意のアイデア?あなたの助けを前もってありがとう!

答えて

0
'null' was found on the request parameter '_csrf' 

は、私はそれが_csrf "からそれを読み込むAPIの晩堂課は

から「認証」から「_csrf」

にパラメータの名前を変更しながら、あなたはパラメータに「認証」の名前を使用している参照します

let parameters = [ "username" : user, "password" : password, "_csrf" : token] 
let parameters = [ "username" : user, "password" : password, "Authorization" : token] 

関連する問題