Flo*_*ain 2 php controller routes laravel
我正在开发一个Laravel项目.我不是原始的开发人员,所以如果我犯了错误,请原谅我并解释它是什么.
在这个项目中,我们有一个模块来请求一个新密码.当表单被提交时route('password.request'),用户被重定向到我认为隐藏在框架中的某个地方.
问题是当用户获得新密码时,他会自动登录并可以访问这些页面.但他不应该因为他没有管理权.
所以我尝试注销并将用户重定向到主页,没有任何运气.
有人可以解释为什么laravel(或"我",因为它们是我尚未探索的项目的某些部分)这样做以及如何解决这个问题?
reset.blade.php(请求新密码的表单)
form class="form-horizontal" role="form" method="POST" action="{{ route('password.request') }}">
{{ csrf_field() }}
<input type="hidden" name="token" value="{{ $token }}">
....
Run Code Online (Sandbox Code Playgroud)
我的自定义注销路线:
Route::get('/customLogout', 'Auth\LoginController@customLogout');
Run Code Online (Sandbox Code Playgroud)
resetPasswordController.php
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
class ResetPasswordController extends Controller
{
/*
|--------------------------------------------------------------------------
| Password Reset Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling password reset requests
| and uses a simple trait to include this behavior. You're free to
| explore this trait and override any methods you wish to tweak.
|
*/
use ResetsPasswords;
/**
* Where to redirect users after resetting their password.
*
* @var string
*/
protected $redirectTo = '/customLogout';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
}
Run Code Online (Sandbox Code Playgroud)
LoginController.php中的方法
public function customLogout(){
//Session::flush();
return redirect()->route('/');
}
Run Code Online (Sandbox Code Playgroud)
好吧,我(finnaly)找到了办法.
我重写了名为"resetPassword"的函数并删除了登录代码段.
这个函数来自框架(不记得文件,如果有人可以提供帮助:S)我覆盖了我的ResetPasswordController.php中的函数
protected function resetPassword($user, $password)
{
$user->forceFill([
'password' => bcrypt($password),
'remember_token' => Str::random(60),
])->save();
//$this->guard()->login($user);
}
Run Code Online (Sandbox Code Playgroud)
这使我的密码更改并自动重定向到主页面.
编辑:哦,不要忘记在你的包括中添加:
use Illuminate\Support\Str;
Run Code Online (Sandbox Code Playgroud)