2017-01-21 14 views
-3

Я хочу поддержать забыть логику пароль на мой сайт, используя Laravel 5.2Как реализовать Laravel забыть логику паролей вручную в Laravel 5,2

Я не хочу, чтобы передать на что из кода коробки, который поставляется с По умолчанию Laravel.

мой вопрос: Как реализовать Laravel забыть пароль логики вручную? Будет хорошо, если вы сможете дать мне шаги, чтобы следовать?

+1

Для того, чтобы быть ясным ..... вы хотите, чтобы те же функции, что и laravel, вы выходите из коробки, но пишите сами и просите о шагах? Если anwser да ... копировать и вставлять код laravel в свои собственные файлы, и это то, что .... хорошая работа :) – Bostjan

+0

Его как изобретать колесо. Кроме того, вы находите в нем что-то неуместное. Может быть, это не подходит для вашей реализации. Рад, если бы вы могли поделиться. – Gayan

ответ

-1

1.Built забыл пароль форму:

метод
<h2>Reset Email</h2> 
<form method="POST" role="form" action="{{url('auth/token')}}"> 
{!! csrf_field() !!} 
     <input class="form-control" type="email" name="email" placeholder="Email Address" /><br> 
     <button type="submit" class="btn btn-default">Send Reset link</button> 
</form> 

2.token() в контроллере: Обновите remember_token пользователя с электронной почтой при условии. Отправьте ссылку по электронной почте пользователю с этим токеном и именем пользователя в качестве параметров. Здесь я просто возвращение по ссылке метод

public function token(Request $request) 
    { 
     $token = str_shuffle('abcdefgh1234567890xsYsdsew'); 
     $getEmail=$request->get('email'); 
     $getModel=User::where(['email'=>$getEmail])->first();    
     if($getModel) 
     { 
      $getModel->remember_token=$token; 
      $getModel->update(); 

      return '/auth/reset/'.$getModel->username.'/'.$token; 
     } 
     else 
     { 
      return redirect('/login')->with('message','Email doesnot exist!'); 
     } 

    } 

3.reset(): Если маркер и имя пользователя в базе данных соответствует маркер и адрес электронной почты в ссылку электронной почты, перенаправлять пользователя, чтобы изменить вид формы.

public function reset($username, $token) 
{   
    $getModel=User::where(['username'=>$username])->first();    
    if($getModel->remember_token==$token) 
    { 
      return View('auth.change', ['id' =>$getModel->id]); 
    } 
    else 
    { 
     return redirect('/auth/forgot');  
    } 
} 

Сброс пароля Форма: метод

<h2>Reset Password</h2> 
<form method="POST" id="reset" role="form" action="{{url('/auth/change')}}"> 
{!! csrf_field() !!} 
      <input class="form-control" type="password" id="password" name="password" placeholder="New Password" /><br> 
     <input class="form-control" type="password" name="cpassword" placeholder="Confirm Password" /><br> 
      <input type="hidden" name="id" value="<?php echo $id;?>"> 
      <button type="submit" class="btn btn-default">Change password</button> 
</form> 

изменение():

public function change(Request $request) 
    { 
     $getid=$request->get('id'); 
     $getModel=User::where(['id'=>$getid])->first(); 
     $password=Hash::make($request->get('password')); 
     $getModel->password=$password; 
     $getModel->update(); 
     return redirect('/auth/login') 
       ->with('message','Password changed!'); 
    } 

Но я предпочитаю встроенные функции.

+0

Реализация кода, связанного с проверкой подлинности, не является тривиальной задачей, поэтому использование установленного пакета лучше, чем создание собственного. У вашего кода есть уязвимость. Когда я нахожусь на странице «Сбросить пароль», я могу манипулировать вашим скрытым вводом «id» (который является идентификатором пользователя) и изменить пароль для любого другого пользователя на основе идентификатора. – Bryan

+0

Вторая уязвимость использует 'str_shuffle ('abcdefgh1234567890xsYsdsew')' для генерации токена аутентификации. Для неискушенного атакующего было бы довольно просто обнаружить шаблон, а затем попытаться перетащить токены силы. Идя дальше, сложный атакующий может использовать тот факт, что 'str_shuffle' не является криптографически безопасным генератором случайности для прогнозирования значений токена. – Bryan

+0

@ Брайан благодарит за тестирование и указывает на эти уязвимости. Но я все еще не получаю первый. Как можно изменить пароль другого? –