Php Laravel 5注册后不自动登录

Php Laravel 5注册后不自动登录,php,laravel,Php,Laravel,如何在Laravel 5中完成注册后使不自动登录。 我使用来自的基本身份验证 我还没有从AuthController.php重新编写postRegister(),只是使用了Laravel的basic,没有做任何更改 这是我的AuthController.php protected function validator(array $data) { return Validator::make($data, [ 'name' => 'required|max:255'

如何在Laravel 5中完成注册后使不自动登录。 我使用来自的基本身份验证

我还没有从AuthController.php重新编写postRegister(),只是使用了Laravel的basic,没有做任何更改

这是我的AuthController.php

protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => 'required|max:255',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|confirmed|min:6',
    ]);
}

protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
    ]);
}
这是我的路线

Route::get('auth/register', ['middleware' => 'auth', 'uses' => 'Auth\AuthController@getRegister']);
Route::post('auth/register', ['middleware' => 'auth', 'uses' => 'Auth\AuthController@postRegister']);
这是我的登记表

<form method="POST" action="{{ url('auth/register') }}">
    {!! csrf_field() !!}

    <div>
        Name
        <input type="text" name="name" value="{{ old('name') }}">
    </div>

    <div>
        Email
        <input type="email" name="email" value="{{ old('email') }}">
    </div>

    <div>
        Password
        <input type="password" name="password">
    </div>

    <div>
        Confirm Password
        <input type="password" name="password_confirmation">
    </div>

    <div>
        <button type="submit">Register</button>
    </div>
</form>

{!!csrf_field()!!}
名称
电子邮件
密码
确认密码
登记

谢谢大家!

为什么不干脆
Auth::logout()代码(成功时,即验证程序通过后),然后
重定向::到()其他页面,可能您希望在登录之前执行电子邮件验证或其他操作

/**
 * Handle a registration request for the application.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function postRegister(Request $request)
{
    $validator = $this->validator($request->all());

    if ($validator->fails()) {
        $this->throwValidationException(
            $request, $validator
        );
    }

    // Commenting this line should help.
    Auth::login($this->create($request->all())); 

    return redirect($this->redirectPath());
}

这就是您正在寻找的函数。根据您的意愿编辑/覆盖此文件。

对于任何想要解决此小问题的Laravel 5.2解决方案的人,请将其放入
AuthController.php
文件中,记住在控制器顶部包含/使用请求

/**
* Handle a registration request for the application.
*
* @param  \Illuminate\Http\Request  $request
* @return \Illuminate\Http\Response
*/
public function postRegister(Request $request)
{
    $validator = $this->validator($request->all());

    if ($validator->fails()) {
        $this->throwValidationException(
            $request, $validator
        );
    }

    Auth::login($this->create($request->all())); // Comment this line

    return redirect('/'); // Change the redirection
}
app/Http/Controllers/Auth/AuthController.php

protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => 'required|max:255',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|confirmed|min:6',
    ]);
}

protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
    ]);
}

打开您的注册控制器并覆盖注册方法,您可以在vendor/laravel/framework/src/illighte\Foundation\Auth\RegistersUsers中找到该方法

use Illuminate\Http\Request;
use Illuminate\Auth\Events\Registered;
use Illuminate\Foundation\Auth\RegistersUsers;

class RegisterController extends Controller
{
  use RegistersUsers;
  protected $redirectTo = '/'; // redirect after user registration

  public function register(Request $request)
  {
    $this->validator($request->all())->validate();

    event(new Registered($user = $this->create($request->all())));

    $this->guard()->login($user);   // comment this line to stop autologin after registration

    return redirect($this->redirectPath());
  }
}

您可以重写禁用自动登录的
postRegister()
方法,
login()
仅在活动字段为true时调用

您的
postRegister()
将类似于:

public function postRegister(Request $request)
{

    // validation

    // insert record in user entity

    // check user is active or not

    if ($request->get('active')) {
        $this->auth->login($user);
    }

    // do further as you need
}

我想我找到了一个快速解决办法。我不确定这是否是最好的解决方案,全新的拉威尔。因此,我所做的是进入
vendor/laravel/framework/src/illighted/Foundation/Auth
文件夹,打开
redrectsuers.php
文件,并更改了
redirectPath()
函数。因此,我的函数现在看起来是:

public function redirectPath() {return property_exists($this, 'redirectTo') ?$this->redirectTo : '/login';}

基本上,我将
主页
替换为
登录
。希望没事。等待评论、建议或任何其他意见。祝各位好运。

您好,谢谢您的评论。我仅通过另一用户的身份验证手动注册。也许你能看到这就是我保护路线的原因。非常感谢。参考Ozan的答案,简单地注释掉Auth::login行,该文件应位于illumb\Foundation\Auth\文件夹中-如果您有一个已登录的用户正在创建另一个用户,则该文件也应有效。。。我假设您担心已经登录的用户创建了一个帐户,然后作为此帐户登录?可以从使用表单注册他们的人处进行注册。因此新用户无法访问url并为自己注册。@sprintcar78a是的,您完全正确。注册新用户后,我应该与当前登录的用户保持一致,而不是以我所创建的用户的身份登录。我已经对Auth::login行进行了注释,如果您注释掉
Auth::login($this->create($Request->all()),则会得到错误
调用undefined方法illumb\Support\Facades\Request::all()
则不会点击创建函数,也不会创建用户。