2016-01-26 4 views
0

Я использую Ajax для отправки электронной почты, так что я моя проблема, если я не имеюLaravel 5 missmatch лексема отправки электронной почты

{!! csrf_field() !!}

в виде я получит маркер missmatch error.If я добавить входной скрытый маркер в виде я получу эту ошибку

Swift_RfcComplianceException в MailboxHeader.php линии 348: Адрес в указанный почтовый ящик [] не соответствует RFC 2822, 3.6.2.

Как это исправить. Спасибо за помощь.

здесь это вид

<form action="{{ url('/findpass')}}" method="POST" id="forgotpassForm"> 
            {!! csrf_field() !!} 
            <div class="form-group"> 
             <input class="form-control input-lg" placeholder="E-mail" name="emailForgot" type="email" id="emailForgot" required> 
            </div> 
            <input type="submit" class="btn btn-lg btn-primary btn-block" id="forgotpassBtn" value="Send email"> 
          </form> 

Ajax

$(document).ready(function() { 
    $('#forgotpassBtn').click(function() { 
     event.preventDefault(); 
     var email=$("#emailForgot").val(); 
     var _token = $("input[name='_token']").val(); 
     $.ajax({ 
      url: '/findpass', 
      type: 'POST', 
      data:{ 
       email:email, 
       _token : _token 
      }, 
      success:function(data) { 
       alert(data.mess); 
       $("#forgotpass")[0].reset(); 
      }, 
      error:function() { 
       alert("Error"); 
      } 
     }); 


    }); 
}); 

Контроллер

public function resetPass() 
    { 
     $emailForgot=Input::get('emailForgot'); 
     $user= User::where('email', '=' , $emailForgot)->first(); 
     $data=['username'=>$user -> username,'email'=>$user -> email,'token'=>$user -> remember_token]; 
     Mail::send('ui.mail.reset',$data, function ($m) use ($user) { 
      $m->from('[email protected]', 'Reset password'); 
      $m->to($user->email, $user->full_name)->subject('Email reset password'); 
     }); 
     return response()->json(array('mess'=>'Mail send')); 
    } 

ответ

0

Добавьте csrf без blade и добавить id самостоятельно. Получите значение csrf значение id, используя jquery. Вот как вы можете это сделать.

Изменить {!! csrf_field() !!} на:

<input type="hidden" name="_token" value="{{ csrf_token() }}" id="token"/> 

И изменить эту строку кода: АЯКС

var _token = $("input[name='_token']").val(); 

To:

var _token = $('#token').val(); 

Может быть, это не самый лучший способ. Но я решил проблему с этой процедурой.

0

Вы также можете добавить глобальный маркер CSRF для всех Ajax вызовов, как этот

 $(document).ready(function(){ 
     $.ajaxSetup({ 
      headers: { 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content') }, 
     }); 
    }); 

Тогда просто переопределить метод tokensMatch() лексемы VerifyCsrfToken также искать АЯКС заголовка

protected function tokensMatch($request) 
{ 
    // If request is an ajax request, then check to see if token matches token provider in 
    // the header. This way, we can use CSRF protection in ajax requests also. 
    $token = $request->ajax() ? $request->header('X-CSRF-Token') : $request->input('_token'); 

    return $request->session()->token() == $token; 
} 

После этого все ваши вызовы ajax будут автоматически проходить проверки csrf и быть безопасными.

0

Swift_RfcComplianceException в MailboxHeader.php строка 348: Адрес в почтовом ящике указан [] не соответствует RFC 2822, 3.6.2.

Указанная ошибка связана с тем, что вы не настроили адрес от config/mail.php. Он по умолчанию установлен на null, но должен быть действительным адресом электронной почты:

'from' => ['address' => '[email protected]', 'name' => null],