检查用户是否已在Laravel中注册并确认

时间:2017-09-15 12:33:57

标签: php laravel laravel-5.5

我需要检查用户是否已通过电子邮件注册和确认。

现在,我知道Laravel已经检查用户是否已经存在。

我需要的是做这样的事情:

if($found_user->exists && $found_user->confirmed == 1) 
{
//do this
}else if($found_user->exists && $found_user->confirmed == 0)
{
//do that
}

我可以轻松地在RegisterController中,在函数create(array $data)中做到这一点,但我觉得它不是放置函数的正确位置,因为它在被验证后被调用

是否有适当的地方可以放置它还是应该留在创作中?

3 个答案:

答案 0 :(得分:0)

您需要了解Protecting Routes

您可以将auth中间件附加到要保护的路由,或直接在控制器的__construct

  

Laravel附带一个auth中间件,在Illuminate \ Auth \ Middleware \ Authenticate中定义

如果您需要own Auth middleware,可以输入以下内容

php artisan make:middleware MyOwnAuth

通过这种方式,您可以检查用户是否在您需要的页面上确认

答案 1 :(得分:0)

我决定把它放在函数中。

create(array $data){
    $this->check_user_confirmation($data["email"])
...
}

虽然我知道某个地方有一个功能来检查用户是否已经存在,并且在那里进行检查是最佳的,但它可能是我不喜欢在任何框架中修改的应用程序核心的一部分

如果其他人有更好的想法,我仍然是开放的。

答案 2 :(得分:0)

你的更好的版本Laravel有中间件设施,中间件的基本概念是做限制而不将请求传递给服务器,就像过滤器一样。

<?php

namespace App\Http\Middleware;

use Closure;

class CheckConfirmedUser {
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request $request
     * @param  \Closure $next
     *
     * @return mixed
     */
    public function handle( $request, Closure $next ) {
        if ( $found_user->exists && $found_user->confirmed == 1 ) {
            //do this
        } else if ( $found_user->exists && $found_user->confirmed == 0 ) {
            //do that
        }

        return $next( $request );
    }
}

您需要查询$found_user