从Laravel Web App

时间:2016-02-06 08:33:59

标签: php api laravel authentication

我正在重构我的代码以从我的控制器中提取API。

在我的API中,通常我需要知道用户的角色,以便我可以显示正确的数据,因此我需要用户的数据。

我的第一个想法是使用基于用户/密码的基本身份验证来验证我的API访问。

我的第一个想法是实现一个过滤器,将所有的API放在同一路由组中。

中间件看起来像:

class simpleAuthMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request $request
     * @param  \Closure $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        return Auth::onceBasic('email') ?: $next($request);
    }
}

当执行请求时,一个基本的auth弹出窗口在导航过程中打扰了我。

然后,我尝试使用Guzzle:

$response = $client->request('GET', '/tournaments', [
        'auth' => [Auth::user()->email,
                   Auth::user()->password]
    ]);

我有一些问题要实现它,因为它使用未加密的密码,我的数据库只有bcrypt密码。此外,我还管理来自使用Google / Facebook的社交名称认证的用户,这些用户没有密码。

然后我想我可以为每个用户添加一个令牌,并为我的API实现令牌安全性。但令牌很适合授予或不授予API,但对我来说,它不应该用于检索用户数据。即使我选择256个char令牌,它也存在远程可能性而不是2个用户获得相同的令牌。 此外,这意味着我应该在每个API调用中进行额外的查询以获取用户信息。

所以我需要做的是:

  1. 在我的网络应用和API访问中都有一种安全的方式来识别用户
  2. 可以访问API中的Auth :: user()
  3. 我需要的是简单的东西,问题似乎并不太复杂。我看到Laravel Spark会处理JWT,所以我会试着等到Spark发布。同时,任何想法我应该怎么做?

1 个答案:

答案 0 :(得分:0)

实现这一目标的方法是实施JWT。使用this plugin

很容易

按照教程: Token-Based Authentication for AngularJS and Laravel Apps

了解JWT: The Anatomy of a JSON Web Token

您也可以使用Auth0 APIs轻松完成。它对于小型系统是免费的。