Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Laravel:重置密码而不获得重定向响应_Angularjs_Laravel_Laravel 5 - Fatal编程技术网

Angularjs Laravel:重置密码而不获得重定向响应

Angularjs Laravel:重置密码而不获得重定向响应,angularjs,laravel,laravel-5,Angularjs,Laravel,Laravel 5,我正在构建一个angular应用程序,希望实现密码重置。但是,默认的laravel配置似乎不允许使用纯粹的XMLHttpRequest($http.post)请求来执行此操作,并使用302重定向进行响应 通过在authController类中实现上述方法并返回json响应,我成功地使postLogin和postRegister工作,而无需发出重定向,这样做会覆盖上述方法的默认laravel实现。postmail没有这样的运气,而且它似乎根本没有命中该方法,我只是立即得到302回复 理想情况下,除

我正在构建一个angular应用程序,希望实现密码重置。但是,默认的laravel配置似乎不允许使用纯粹的XMLHttpRequest($http.post)请求来执行此操作,并使用302重定向进行响应

通过在authController类中实现上述方法并返回json响应,我成功地使postLogin和postRegister工作,而无需发出重定向,这样做会覆盖上述方法的默认laravel实现。postmail没有这样的运气,而且它似乎根本没有命中该方法,我只是立即得到302回复

理想情况下,除了检查他们的电子邮件,我根本不希望用户离开单页应用程序。 所以1。用户将电子邮件发送到postEmail->带有重置链接的电子邮件或更好的电子邮件“重置代码”发送到电子邮件地址->用户然后将重置令牌代码输入到已打开的web应用程序中,或者如果无法完成,则浏览到在新选项卡中打开的重置密码页面

我尝试实现postEmail方法,如下所示:

public function postEmail(Request $request)
            {

                $this->validate($request, ['email' => 'required|email']);

                $response = Password::sendResetLink($request->only('email'), function (Message $message) {
                    $message->subject($this->getEmailSubject());
                });

                switch ($response) {
                    case Password::RESET_LINK_SENT:


                         return response()->json(['msg' => 'A reset link has been sent to your E-mail'], 200);

                    case Password::INVALID_USER:


                         return response()->json(['msg' => 'This E-mail cannot be found in our system'], 200);
                }
            }

另外,带有laravel发出的重置链接的电子邮件的模板在哪里?

您可以在
App\Http\Controllers\Auth
命名空间中创建密码控制器,以扩展密码重置方法

<?php 

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Contracts\Auth\Guard;
use Illuminate\Contracts\Auth\PasswordBroker;
use Illuminate\Foundation\Auth\ResetsPasswords;

class PasswordController extends Controller 
{
    use ResetsPasswords;

    public function postEmail(Request $request)
    {

    }

}

您可以在
App\Http\Controllers\Auth
命名空间中创建PasswordController来扩展密码重置方法

<?php 

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Contracts\Auth\Guard;
use Illuminate\Contracts\Auth\PasswordBroker;
use Illuminate\Foundation\Auth\ResetsPasswords;

class PasswordController extends Controller 
{
    use ResetsPasswords;

    public function postEmail(Request $request)
    {

    }

}

虽然接受的答案完全无效,但不覆盖原始通知类的另一个解决方案如下,
ResetPassword
提供了一个名为
createUrlUsing
的静态方法,该方法接受
闭包
,因此我们可以覆盖URL,如下所示:

使用light\Support\Facades\Password;
使用Illumb\Auth\Notifications\ResetPassword;
...
$status=密码::sendResetLink(
['email'=>$args['email']],
函数($user,$token){
ResetPassword::createUrlUsing(函数($notifiable,$token){
//这是覆盖URL的地方,您还可以查看
//Laravel和skip中的'url'、'action'和'route'函数
//‘sprintf’。
回程冲刺(
%s/%s/?令牌=%s&电子邮件=%s“,
config('your.optional.frontend_url'),
config('your.optional.password\u reset'),
$token,
$notifiable->getEmailForPasswordReset(),
);//前端\u url/密码\u url/?令牌=令牌&电子邮件=电子邮件
});
返回$user->notify(新重置密码($token));
}
);
//这是处理最终响应的可选方法,您可以将其转换为
//JSON甚至可以忽略它。
返回$status==密码::重置链接\u已发送
? ['status'=>\uuuu($status)]
:抛出新错误(_($status));

这段代码应该放在一个新的路径上,以处理密码重置请求,而不是使用默认的Laravel路径。

当接受的答案完全无效时,另一个不覆盖原始通知类的解决方案如下:,
ResetPassword
提供了一个名为
createUrlUsing
的静态方法,该方法接受一个
闭包
,因此我们可以覆盖URL,如下所示:

使用light\Support\Facades\Password;
使用Illumb\Auth\Notifications\ResetPassword;
...
$status=密码::sendResetLink(
['email'=>$args['email']],
函数($user,$token){
ResetPassword::createUrlUsing(函数($notifiable,$token){
//这是覆盖URL的地方,您还可以查看
//Laravel和skip中的'url'、'action'和'route'函数
//‘sprintf’。
回程冲刺(
%s/%s/?令牌=%s&电子邮件=%s“,
config('your.optional.frontend_url'),
config('your.optional.password\u reset'),
$token,
$notifiable->getEmailForPasswordReset(),
);//前端\u url/密码\u url/?令牌=令牌&电子邮件=电子邮件
});
返回$user->notify(新重置密码($token));
}
);
//这是处理最终响应的可选方法,您可以将其转换为
//JSON甚至可以忽略它。
返回$status==密码::重置链接\u已发送
? ['status'=>\uuuu($status)]
:抛出新错误(_($status));

这段代码应该放在一个新路径上,以处理密码重置请求,而不是使用默认的Laravel路径。

您需要创建一个
PasswordController
来扩展
postmail()
方法。您需要创建一个
PasswordController
来扩展
postmail()
方法。