我正在为我的俱乐部建立一个会员数据库应用程序。我正在使用Laravel 5构建此解决方案。
我有标准的身份验证设置和包含大多数成员数据的配置文件表。所有成员都是已分析的,但不一定是活跃用户。
我想要做的是用激活取代注册。创建用户和配置文件,默认情况下禁用,除非管理员授予成员登录的权限。这样,尝试将配置文件附加到新用户就更简单了。
授予后,用户将通过提供其个人资料数据中的一些值来激活其用户访问权限,以验证他们的身份。从那里,他们更改密码,可以看到他们的个人资料。
我的问题是如何在此实例中用激活替换注册?谢谢。
答案 0 :(得分:0)
您可以通过各种方式实现此活动
例如
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
class LoginController extends Controller
{
use AuthenticatesUsers;
...
/**
* The user has been authenticated.
*
* @param \Illuminate\Http\Request $request
* @param mixed $user
* @return mixed
*/
protected function authenticated(Request $request, $user)
{
if (!$user->activated) {
\Auth::logout();
return redirect()->route('login')->with('error', 'Awaiting activation');
}
}
}
详细了解身份验证 - https://laravel.com/docs/5.5/authentication#authenticating-users
如果您想要采用第一种方式,为了进一步保护它,您可以创建一个中间件并让它为每条路径调用,以确保用户不会使用URL来获取不必要的访问权。
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class ActivatedUser
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$user = Auth::user();
if (!$user->activated) {
Auth::logout();
return redirect()->route('login')->with('error', 'Awaiting activation');
}
return $next($request);
}
}
详细了解中间件 - https://laravel.com/docs/5.5/middleware