tablas relacionadas relacion obtener muchos hasmany espaƱol datos consultas belongsto php laravel laravel-5.4

php - relacionadas - Laravel 5.4 Deshabilitar registro de ruta



relacion muchos a muchos laravel (10)

Estoy intentando desactivar la ruta de registro en mi aplicación que ejecuta Laravel 5.4.

En mi archivo de rutas solo tengo el Auth :: route ();

¿Hay alguna manera de deshabilitar la ruta de registro?


¡Esto es engañosamente fácil! Solo debe anular dos métodos en su app/Http/Controllers/Auth/RegisterController.php Class. Vea a continuación, lo que evitará que se muestre el formulario y, lo que es más importante, bloqueará las solicitudes POST directas a su solicitud de registro.

/** * Show the application registration form. * * @return /Illuminate/Http/Response */ public function showRegistrationForm() { return redirect(''login''); } /** * Handle a registration request for the application. * * @param /Illuminate/Http/Request $request * @return /Illuminate/Http/Response */ public function register(Request $request) { abort(404); }


Aunque las soluciones anteriores funcionan, pero creo que cambiar el middleware a ''auth'' en App/Http/Controllers/Auth/RegisterController será una de las soluciones más fáciles. Esto redirigirá a todos los visitantes a la página de inicio de sesión si desean acceder a cualquiera de las rutas de registro. Me gusta esto:

namespace App/Http/Controllers/Auth; class RegisterController extends Controller { public function __construct() { $this->middleware(''auth''); }


Cambio a rutas:

vendedor / laravel / framework / src / Illuminate / Routing / Router.php

public function auth() { // Authentication Routes... $this->get(''login'', ''Auth/LoginController@showLoginForm'')->name(''login''); $this->post(''login'', ''Auth/LoginController@login''); $this->post(''logout'', ''Auth/LoginController@logout'')->name(''logout''); // Registration Routes... //$this->get(''register'', ''Auth/RegisterController@showRegistrationForm'')->name(''register''); //$this->post(''register'', ''Auth/RegisterController@register''); // Password Reset Routes... //$this->get(''password/reset'', ''Auth/ForgotPasswordController@showLinkRequestForm'')->name(''password.request''); //$this->post(''password/email'', ''Auth/ForgotPasswordController@sendResetLinkEmail'')->name(''password.email''); //$this->get(''password/reset/{token}'', ''Auth/ResetPasswordController@showResetForm'')->name(''password.reset''); //$this->post(''password/reset'', ''Auth/ResetPasswordController@reset''); }


Desde Laravel 5.0 solo puedes pasar y organizar con opciones

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

Puede revisar el código Illuminate / Routing / Router @ auth


El código:

Auth::routes();

Es un atajo para esta colección de rutas:

// Authentication Routes... Route::get(''login'', ''Auth/LoginController@showLoginForm'')->name(''login''); Route::post(''login'', ''Auth/LoginController@login''); Route::post(''logout'', ''Auth/LoginController@logout'')->name(''logout''); // Registration Routes... Route::get(''register'', ''Auth/RegisterController@showRegistrationForm'')->name(''register''); Route::post(''register'', ''Auth/RegisterController@register''); // 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'');

Por lo tanto, puede sustituir el primero con la lista de rutas y comentar cualquier ruta que no desee en su aplicación.


En web.php, reemplazar

Auth::routes();

Con

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

Para que pueda eliminar la ruta de registro de la lista de rutas de autenticación predeterminada. Lo intenté en 5.7 y funcionó bien.


Podrías intentar esto.

Route::match([''get'', ''post''], ''register'', function(){ return redirect(''/''); });

Agregue esas rutas justo debajo de Auth::routes() para anular las rutas de registro predeterminadas. Cualquier solicitud a la ruta /register se redireccionará a la baseUrl.


Sí, hay una manera

Auth::routes();

Remota esa ruta desde tu web.php en tu directorio de rutas.

Esa ruta es lo que controla el registro.


Supongo que desea restringir el acceso a algunas páginas para invitados y solo el administrador puede registrar un invitado. Puede lograrlo agregando su propio middleware en el archivo kernel.php como se muestra a continuación:

protected $routeMiddleware = [ ''authenticated'' => /App/Http/Middleware/AuthenticatedMiddleware::class ];

Después de crear el middleware, debe usarlo para poder ir al archivo web.php donde están sus rutas y agregarlo a la ruta que desea restringir, como a continuación:

Route::get(''register'', ''Auth/RegisterController@showRegistrationForm'')->name(''register'')->middleware(''authenticated''); Route::post(''register'', ''Auth/RegisterController@register'')->middleware(''authenticated'');

De esta manera, el registro está restringido para invitados, pero el administrador todavía puede acceder a la página si alguna vez desea registrar a otro administrador.

No te olvides de reemplazar el Auth::routes(); con la lista detallada a continuación:

// Authentication Routes... Route::get(''login'', ''Auth/LoginController@showLoginForm'')->name(''login''); Route::post(''login'', ''Auth/LoginController@login''); Route::post(''logout'', ''Auth/LoginController@logout'')->name(''logout''); // Registration Routes... Route::get(''register'', ''Auth/RegisterController@showRegistrationForm'')->name(''register'')->middleware(''authenticated''); Route::post(''register'', ''Auth/RegisterController@register'')->middleware(''authenticated''); // 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'');


Supongo que puedes hacerlo así, en tu archivo web.php:

Route::redirect(''register'', ''login'', 301);