2017-04-26 184 views
0

我正在开发一个项目并且正在编写后端。我决定将它作为一个休息API来实现,因为我需要编写一个Web应用程序以及一个移动应用程序。我遇到问题了解如何登录用户,因为其余api是无状态的。我已阅读了一些提及每个请求或Oauth2.0的基本认证(发送登录凭证)的材料。基本身份验证不建议,我不明白为什么我应该使用Oauth2.0,因为没有第三方会使用我的api。我的问题是我应该如何实现登录功能和标准是什么?使用Api登录

+0

您使用的是什么版本的Laravel? – dexterb

+0

Laravel版本5.4 – khan

回答

0

您需要为Users表添加一个唯一的api_token列。

$table->string('api_token', 60)->unique();

在Laravel 5.4,api.php保持API的路线,你需要使用一个彻头彻尾的现成的中间件AUTH:API,这样你就可以鉴别api_token请求。

更多 http://bootstrapdojo.com/rest-api-laravel-5-4-with-token-authentication/

+0

谢谢,但我有几个问题。是否应该与每个需要身份验证的请求一起发送api标记?我应该什么时候刷新令牌?应该使用https?由于使用http似乎会导致人为中间攻击。 – khan

+0

@ khan是的,应该在每个请求中发送令牌来授权该请求。关于安全问题,有人可能已经回答了您的问题http://stackoverflow.com/questions/38322835/is-using-a-api-token-in-url-or-post-curl-safe – dexterb

0

我想你可以创建一个REST API,关于JSON网络令牌提供CRUD操作。

1
  1. 添加护照包到项目中,看到这个更多信息https://laravel.com/docs/5.4/passport
  2. 创建密码授予客户
  3. 创建令牌
  4. 使用改造或其他包装新用户呼叫Laravel API

    /* prepare httpClient */ 
    httpClient.addInterceptor(new Interceptor() { 
        @Override 
        public Response intercept(Chain chain) throws IOException { 
         Request orginal = chain.request(); 
         Request.Builder builder = orginal.newBuilder(); 
         builder.addHeader("Accept", "application/json"); 
         if (tools.isAuthorized()) { 
          builder.addHeader("Authorization", "Bearer " + tools.getAccessToken()); 
         } 
         builder.method(orginal.method(), orginal.body()); 
         Request build = builder.build(); 
         return chain.proceed(build); 
        }}); 
    

    5-调用API并获取响应,然后保存用户令牌。