【发布时间】:2017-02-07 21:23:02
【问题描述】:
我想通过任何 url 中的令牌执行身份验证。在路由之前调用此身份验证,并且令牌存储在用户表中(字段token)。
访问URLmysite.com/backend/?token=XXX&anyparam=any时,如果token有效,用户应该被重定向到mysite.com/backend/?anyparam=any。
我正在尝试对 Controller 的构造函数执行身份验证,因此如果 URL 具有有效的令牌(与用户的令牌匹配),则应该对用户进行身份验证。
public function __construct(Request $request)
{
// url with token
if($request->has('token')) {
$new_url = $request->url() . '/?' . http_build_query($request->except(['token']));
$user = User::where('token', $request->input('token'))->first();
Auth::login($user);
//dd(Auth::user()); // says the user is authenticated
return redirect($new_url)->send();
}
}
但是,在重定向之后,用户不再经过身份验证。
我错过了什么?
另外,生成令牌的过程与此问题无关。
【问题讨论】:
-
__constructs没有返回值。他们总是返回void。话虽如此,由于您使用令牌对用户进行身份验证,我只能假设您还使用一些包来处理令牌生成。如果是这种情况,则需要更多信息。 -
您能描述一下您需要在构造中进行身份验证的原因吗?可能,还有另一种解决方案
-
@Andrew 检查已编辑的问题。
标签: php laravel authentication laravel-5.2