<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| This file is where you may define all of the routes that are handled
| by your application. Just tell Laravel the URIs it should respond
| to using a Closure or controller method. Build something great!
|
*/
// Auth::routes();
Route::get('/login', 'Auth\LoginController@showLoginForm' );
Route::post('/login', 'Auth\LoginController@login');
Route::post('/logout', 'Auth\LoginController@logout');
Route::get('/home', 'HomeController@index');
/**
* Show the application registration form.
*
* @return \Illuminate\Http\Response
*/
public function showRegistrationForm()
{
//return view('auth.register');
abort(404); //this will throw a page not found exception
}
use Illuminate\Http\Response;
.
.
.
public function showRegistrationForm()
{
abort(Response::HTTP_NOT_FOUND);
}
public function register(Request $request)
{
abort(Response::HTTP_NOT_FOUND);
}
24 回答
加
在文件的顶部
只需覆盖
showRegistrationForm()
和register()
方法AuthController
for Laravel 5.0 - 5.4对于Laravel 5.5来说
Auth/RegisterController.php
如果您正在使用Laravel 5.2,并且您使用
php artisan make:auth
安装了与auth相关的功能,那么您的app/Http/routes.php
文件将通过简单地调用Route::auth()
来包含所有与auth相关的路由 .auth()方法可以在
vendor/laravel/framework/src/Illuminate/Routing/Router.php
中找到 . 因此,如果您想按照某些人的建议去做并通过删除不需要的路线来禁用注册(可能是个好主意),那么您必须从auth()方法复制您仍然需要的路由并将它们放入app/Http/routes.php
(将呼叫替换为路线:: AUTH()) . 例如:如果你可能有所不同,我记得自5.0以来事情发生了很大变化,在某些时候
artisan make:auth
甚至被删除了IIRC .对于Laravel 5.3和5.4,这是正确的方法:
你必须改变:
至
在 app/Http/Controller/Auth/RegisterController.php
方法1 for 5.3版
在laravel 5.3中没有AuthController . 要禁用寄存器路由,您应该在
RegisterController
的构造函数中更改,如下所示:你可以改变形式:
至:
注意:使用
Redirect
不要忘记user Redirect;
因此用户访问https://host_name/register它的重定向到"/" .方法2 for 5.3版
当我们使用
php artisan make:auth
时,它会自动添加Auth::route();
. 请覆盖/routes/web.php中的路由 . 你可以改变它:*你需要评论这一行:Auth::routes();
谢谢!我希望它可以解决你的问题 .
这可能是5.7中的新功能,但现在有一个auth方法的选项数组 . 运行
php artisan make:auth
后,只需在路径文件中将Auth::routes();
更改为Auth::routes(['register' => false]);
即可禁用用户注册 .覆盖getRegister和postRegister是很棘手的 - 如果你使用git,很有可能
.gitignore
被设置为忽略框架文件,这将导致在你的 生产环境 环境中仍然可以注册的结果(如果laravel是通过composer安装的)例)另一种可能是使用routes.php并添加以下行:
这样,框架文件就不再存在,任何请求仍将被重定向到远离Frameworks寄存器模块 .
AuthController.php @limonte的覆盖位于App \ Http \ Controllers \ Auth中,而不是在供应商目录中,因此Git不会忽略此更改 .
我添加了这个功能:
它工作正常 .
继5.4我的解决方案:
注意我已经注释掉了
Auth::routes()
和两条注册路线 .Important: 您还必须确保在
app.blade
布局中删除route('register')
的所有实例,否则Laravel将抛出错误 .从Laravel 5.7开始,您可以将一系列选项传递给
Auth::routes()
. 然后可以使用以下命令禁用寄存器路由:您可以从源代码中看到它的工作原理:src/Illuminate/Routing/Router.php .
The following method works great:
复制/vendor/laravel/framework/src/Illuminate/Routing/Router.php中的所有路由并将其粘贴到web.php中并注释掉或删除Auth :: routes() .
然后设置条件以启用和禁用.env的注册 . 在视图/错误中复制503.blade.php文件并创建403禁止或任何您喜欢的内容 .
将ALLOW_USER_REGISTRATION =添加到.env并通过将其值设置为true或false来控制用户注册 .
现在您可以完全控制路径,并且供应商文件保持不变 .
web.php
这是之前一些答案的组合,特别是Rafal G.和Daniel Centore .
在
routes.php
中,只需添加以下内容:然后,您可以有选择地控制是否允许注册
.env
文件 .在Laravel 5.4中
您可以在方法
auth()
中的类\Illuminate\Routing\Router
中找到通过Auth::routes()
注册的所有路线它看起来像这样:
只需复制您想要/需要的路线,你就可以了!
In Laravel 5.5
我试图在Laravel 5.5中完成同样的问题 . 而不是使用
Auth::routes()
在web.php路由文件中,我只包含登录/注销路由:我不得不使用:
使用Redirect :: to()给了我一个错误:
在laravel 5.3中,您应该通过在
app\Http\Controllers\Auth
中的RegisterController.php
文件中包含以下代码来覆盖默认值showRegistrationForm()
因为你最好扔掉
404 error
所以入侵者知道他迷路了 . 当您准备好在您的应用中进行注册时,请取消注释//return view('auth.register');
然后发表评论abort(404);
这只是一个虚假的/////////////////////////// ////
如果您需要为用户,成员,学生,管理员等使用多次身份验证,例如create auth,那么我建议您查看这个hesto/multi-auth这是一个非常棒的程序包,可以在L5应用程序中使用无限制的身份验证 .
您可以在this writeup中阅读有关Auth方法及其相关文件的更多信息 .
In Laravel 5.5
处理类似的问题并将来自guest的中间件参数设置为'auth'似乎是一个更优雅的解决方案 .
编辑文件:app-> http-> Controllers-> Auth-> RegisterController.php
虽然我可能是错的...但是它比使用更多线条编辑路由更简单,而不仅仅是简单地重定向页面......至少在这种情况下,想要锁定访客的注册 .
我想这可能是一个更好的解决方案 .
覆盖以下方法,如下所述
App\Http\Controller\Auth\RegisterController.php
我发现这是laravel 5.6中最简单的解决方案!它会将尝试访问yoursite.com/register的任何人重定向到yoursite.com
routes/web.php
我所做的只是用登录刀片代码替换寄存器刀片代码 . 这样注册仍然会登录 .
resources/views/auth/register.blade.php
替换为resources/views/auth/login.blade.php
对于Laravel 5.6,将以下方法粘贴到
app\Http\Controller\Auth\RegisterController
中现在你在
RegistersUser
trait中覆盖这些方法,每当你改变主意时移除这些方法 . 您还可以在welcome.blade.php
和login.blade.php
视图中注释注册链接 .LAravel 5.6
为了不按原样更改代码,只需创建一个中间件来检测请求url是否为url('register'),然后重定向到404或在任何地方执行 .
在Laravel 5.5中非常简单,如果您使用的是CRUD路由系统 .
转到
app/http/controllers/RegisterController
有命名空间:Illuminate\Foundation\Auth\RegistersUser
你需要去RegistersUser:
Illuminate\Foundation\Auth\RegistersUser
有方法调用
showRegistrationForm
更改此:return view('auth.login');
为此:return redirect()->route('auth.login');
并从您的刀片页面路由调用寄存器中删除 . 它可能看起来像这样: