2017-05-23 62 views
0

我想在Laravel中禁用正常的注册方法,因为我只想管理员可以注册和管理/编辑用户。
但我不知道如何做到这一点,从哪里开始。如何删除Laravel 5.4的默认注册并让管理员手动执行

感谢

编辑:
我'不只是询问如何禁用默认的寄存器,而且如何让控制面板在管理员手动REGIST用户。

+0

可能有[Larav EL 5.4禁用注册路由](https://stackoverflow.com/questions/42695917/laravel-5-4-disable-register-route) – dparoli

+0

@dparoli不,我问如何手动注册,而不仅仅是禁用默认注册路由。 – vl14b

回答

0

目前,管理你想要什么的唯一方式是删除

Auth::routes(); 

从路由/ web.php和一个添加每个路线之一。

你把所有Auth::routes()增加了这里的路线:

vendor/laravel/framework/src/Illuminate/Routing/Router.php 
auth方法

只需将它们全部粘贴到您的routes/web.php中,然后移除您不想要的(GET/POST请求/注册)。

至于注册管理面板中的用户,有几种方法可以做到这一点。这里是一个:

你有你的用户模型布尔,我会打电话is_admin

您创建了一个中间件isAdminMiddleware,您可以在其中检查用户是否具有is_admin属性。如果他有,它可以走得更远,否则回到上一页或返回403.

例如,在UsersController中创建一个GET方法,该方法返回包含用于创建新用户的表单的视图。

在同一个控制器中,创建一个POST方法,它将新用户添加到数据库并进行适当的验证。

不要忘记用isAdminMiddleware保护这两条路线,以便用户不能进入该页面。

+0

谢谢,你的解释非常好,我几乎可以理解它。但我还有一个问题,“所以我只需要为注册用户创建一个新的控制器和垃圾邮件”。谢谢。 – vl14b

+0

这取决于你想要构建你的控制器的方式,这是一种方式是,并且工作正常,但有些人(包括我)更喜欢单动控制器(基本上,你将每个方法分成它自己的控制器)。我想这更多是个人选择 –

0

当您运行php artisan make:auth脚手架Laravel的身份验证功能时,会发生很多事情。

routes/web.php,你将需要删除此行

Auth::routes(); 

这将使航线如/login/register无法访问。

您还可以清理你不会resources/views/auth

最后需要的意见,你就需要从安全管理面板编写自己的代码以注册用户将重新使用特质, Laravel已经提供。

+0

所以,我需要手动重写登录? – vl14b

+1

不是,不。你可以从'app/Http/Controllers/Auth/RegisterController.php'中获得灵感, – Mozammil

+0

好的,所以我只需要移除auth :: routes(); 那么我需要为我的登录做一个新的路线? 然后我需要为寄存器做一个新的控制器? 对不起,你能帮我解释一下吗?我根本不懂。 – vl14b

0

如果你真的想保持验证::路线()脚手架,但禁止从管理的“控制面板”外注册,这是做的最简单的方法:

只需覆盖从RegistersUsers特质方法在你的应用/ Http/Controllers/Auth/RegisterController.php类中。

public function showRegistrationForm() { 
    abort(403, 'Unauthorized action.'); 
} 

public function register() { 
    abort(403, 'Unauthorized action.'); 
} 

第二个简单的选择是改变__construct()你RegisterController.php的中间件方法:

public function __construct() { 
    $this->middleware('guest'); 
} 

public function __construct() { 
    $this->middleware('auth'); 
} 

,或者一些自定义的中间件,如:

public function __construct() { 
    $this->middleware('admin'); 
}