只在Laravel中暴露某些auth路线

时间:2016-07-11 11:54:31

标签: laravel authentication routes laravel-5.2

在Laravel 5.2中,身份验证变得简单,其认证方式之一就是通过一种方法添加身份验证所需的所有路由,此方法为Route::auth()

哪个好,但是只有暴露登录和注销操作所需的最佳方式才是最好的方式,而不是注册操作,因为我想拥有一个主登录,这可以让其他帐户管理网站。但我不想要普通意义上的“用户”。

3 个答案:

答案 0 :(得分:2)

当然,您可以在没有注册路线的情况下添加到routes.php。

// Authentication Routes...
//Login Routes...
Route::get('login','AdminAuth\AuthController@showLoginForm');
Route::post('login','AdminAuth\AuthController@login');
Route::get('logout','AdminAuth\AuthController@logout');


// Registration Routes...
Route::get('register', 'Auth\AuthController@showRegistrationForm');


// Password Reset Routes...
Route::get('password/reset/{token?}','Auth\PasswordController@showResetForm');

答案 1 :(得分:0)

如果您在Route::auth()中运行routes.php方法并运行php artisan route:list命令,则可以查看它定义的路线。

在这种情况下,他们是:

+--------+----------+-------------------------+------+----------------------     -------------------------------------------+------------+
| Domain | Method   | URI                     | Name | Action                                                           | Middleware |
+--------+----------+-------------------------+------+-----------------------------------------------------------------+------------+
|        | GET|HEAD | /                       |      | Closure                                                         | web        |
|        | GET|HEAD | home                    |      | App\Http\Controllers\HomeController@index                       | web,auth   |
|        | GET|HEAD | login                   |      | App\Http\Controllers\Auth\AuthController@showLoginForm          | web,guest  |
|        | POST     | login                   |      | App\Http\Controllers\Auth\AuthController@login                  | web,guest  |
|        | GET|HEAD | logout                  |      | App\Http\Controllers\Auth\AuthController@logout                 | web        |
|        | POST     | password/email          |      | App\Http\Controllers\Auth\PasswordController@sendResetLinkEmail | web,guest  |
|        | POST     | password/reset          |      | App\Http\Controllers\Auth\PasswordController@reset              | web,guest  |
|        | GET|HEAD | password/reset/{token?} |      | App\Http\Controllers\Auth\PasswordController@showResetForm      | web,guest  |
|        | GET|HEAD | register                |      | App\Http\Controllers\Auth\AuthController@showRegistrationForm   | web,guest  |
|        | POST     | register                |      | App\Http\Controllers\Auth\AuthController@register               | web,guest  |
+--------+----------+-------------------------+------+-----------------------------------------------------------------+------------+

您可以清楚地看到URI列中需要哪些内容; login(获取),login(发布)和logout(获取)。

Route::auth()移除routes.php方法并添加以下内容:

Route::get('login', 'Auth\AuthController@showLoginForm');
Route::post('login', 'Auth\AuthController@login');
Route::get('logout', 'Auth\AuthController@logout');

如果您确实希望已注册的管理员能够手动更改其密码,您还可以包含以下内容:

Route::post('password/email', 'Auth\PasswordController@sendResetLinkEmail');
Route::post('password/reset', 'Auth\PasswordController@reset');
Route::get('password/reset/{token?}', 'Auth\PasswordController@showResetForm');

别忘了给你的工具:)

答案 2 :(得分:0)

方法1。

web.php文件中添加路由。 例如,当您的应用仅需要登录和注销路径

Route::get('login', 'Auth\AuthController@showLoginForm');
Route::post('login', 'Auth\AuthController@login');
Route::get('logout', 'Auth\AuthController@logout');

方法2-有更好的方法。 只需使用Auth::routes()方法并添加其他参数即可。 相同的示例-应用仅需要登录和注销路径

Auth::routes(['register' => false, 'reset' => false])