如何在Laravel中保护“注册”API路由?

时间:2018-04-02 22:09:01

标签: php laravel laravel-5

我正在为Laravel建立Android / iPhone APP的后端。我目前正在使用JWT-AUTH包进行身份验证,但我注意到/register路由非常开放,如果有人想要,他们可能会创建一个流氓应用程序并使用虚假注册向我的后端发送垃圾邮件。

有没有办法防止它?我不想使用Passport,因为我不得不在移动应用程序中硬编码client_id和client_secret。

1 个答案:

答案 0 :(得分:0)

最好的方法是改变 app / Http / Controllers / Auth / RegisterController.php 的构造函数,以使用 auth 中间件而不是来宾

/**
 * Create a new controller instance.
 *
 * @return void
 */
public function __construct()
{
    $this->middleware('auth');
}

这将使用户必须登录才能查看注册路由。

另一种方法是手动复制 来自 Illuminate \ Routing \ Router.php 中的 auth()方法的路线(没有注册路线)并替换 Auth: :您的网络路线文件中的routes(),包含以下内容

// Authentication Routes...
Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
Route::post('login', 'Auth\LoginController@login');
Route::post('logout', 'Auth\LoginController@logout')->name('logout');

// Password Reset Routes...
Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
Route::post('password/reset', 'Auth\ResetPasswordController@reset');

这样做会完全删除注册路线。

相关问题