Php Laravel 5注册后不自动登录
如何在Laravel 5中完成注册后使不自动登录。 我使用来自的基本身份验证 我还没有从AuthController.php重新编写postRegister(),只是使用了Laravel的basic,没有做任何更改 这是我的AuthController.phpPhp 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'
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()在postRegister函数中编写>代码(成功时,即验证程序通过后),然后重定向::到()代码>其他页面,可能您希望在登录之前执行电子邮件验证或其他操作
/**
* 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()
代码>则不会点击创建函数,也不会创建用户。