デフォルトのLaravel authを調整して、AngularJSのAPIとして機能させることができました。/reset/{token}に行くパスワードリセットリンクが付いた電子メールを送信してもらえます。また、検証エラーがなければ、パスワードは正常に変更されます。Laravel 5.1/AngularJS:Angular Viewでパスワードをリセットする(CSRFトークンを検証する方法)
私は角度表示を使用しているので、唯一の問題は、実際にトークンを検証することがなく、reset-password
状態を示す前にちょっとばかげていないことを確認することではありません。私は、コントローラの先頭にこれを追加してみました:
if ($stateParams.token != $cookies.get('XSRF_TOKEN')) {
$state.go('reset');
}
...トークンは、現在のCSRFトークンであれば基本的に見るだろうが、パスワードリセットのリンクがCSRF送信されたときので、それは動作しません。トークンが変更されたり、セッションからのトークンではなくなりました。
私はこれをどのように行うことができますか? `/ reset /:token 'のURLに入力されたトークンが有効でない場合、ユーザーをリダイレクトしたいだけです。これはResetsPassword.phpでResetsPasswordの特性である
.state('reset', {
url: '/reset',
data: {
permissions: {
except: ['isLoggedIn'],
redirectTo: 'user.dashboard'
}
},
templateUrl: 'views/auth/forgot-password.html',
controller: 'ForgotPasswordController as forgot'
})
.state('reset-password', {
url: '/reset/:token',
data: {
permissions: {
except: ['isLoggedIn'],
redirectTo: 'user.dashboard'
}
},
templateUrl: 'views/auth/reset-password.html',
controller: 'ResetPasswordController as reset'
})
:ここ
は私のコードは...
App.jsです。ほとんどが既に設定されていましたが、APIとして機能するためには削除/変更が多かったのです:
/**
* Send a reset link to the given user.
*/
public function postEmail(EmailRequest $request)
{
$response = Password::sendResetLink($request->only('email'), function (Message $message) {
$message->subject($this->getEmailSubject());
});
switch ($response) {
case Password::RESET_LINK_SENT:
return;
case Password::INVALID_USER:
return response()->json([
'denied' => 'We couldn\'t find your account with that information.'
], 404);
}
}
/**
* Get the e-mail subject line to be used for the reset link email.
*/
protected function getEmailSubject()
{
return property_exists($this, 'subject') ? $this->subject : 'Your Password Reset Link';
}
/**
* Reset the given user's password.
*/
public function postReset(ResetRequest $request)
{
$credentials = $request->only(
'password', 'password_confirmation', 'token'
);
$response = Password::reset($credentials, function ($user, $password) {
$this->resetPassword($user, $password);
});
switch ($response) {
case Password::PASSWORD_RESET:
return;
default:
return response()->json([
'error' => [
'message' => 'Could not reset password'
]
], 400);
}
}
/**
* Reset the given user's password.
*/
protected function resetPassword($user, $password)
{
$user->password = bcrypt($password);
$user->save();
}
これは、LaravelとAngularを使用して開発しているすべての人にとって便利な質問です。投稿していただきありがとうございます。 – delatbabel