zoukankan      html  css  js  c++  java
  • 【laravel5.5+Passport】laravel5的前后端分离之Passport设计

    项目中使用到了laravel5的passport组件,进行前后端分离的 api认证部分:

    前后端分离的api认证,我们用的是:

    【密码授权令牌】,需要用户登录->指定client_id/client_secret->生成token+refresh_token->返回前端->在xml的header['Auth'] 添加token。

    1、官方文档:https://learnku.com/docs/laravel/5.5/passport/1309#personal-access-tokens

    2、社区推荐文章:https://learnku.com/articles/6976/laravel-55-uses-passport-to-implement-auth-authentication#reply118969 (推荐)

    3、错误解决文章:https://cloud.tencent.com/developer/ask/199607

    4、调试参考文章:https://learnku.com/laravel/t/22586  -- postman一步一步来

    4、目的,实现前后端分离api的token认证。

    5、其实我个人认为 api认证这块没有第三方没必要用passport,jwt或者自定义token都可以,因为passport主要用于oauth2,也就是三方交互,而单纯的前后端分离 只有两方。

    6、按照步骤2来基本不会又问题,下面贴几个要点:

    1)Guzzlehttp的client只能访问网络上【真实】存在的域名或ip:port,本地创建的虚拟域名、127.0.0.1和localhost访问是不行滴

    2)username不是users表的username字段,默认是users的email字段,当然你可以修改成username字段,详见下面步骤7

    3)已知laravel5.5及以后,users表的password必须是默认的hash::make 加密,不能是bcrypt加密,前台登录时候仅需提供123456类似密码即可,passport内部自动进行hash_check对比。

    4)将步骤2中的 /api/oauth/token,修改为 /oauth/token 

    7、修改passport默认的email认证字段,我们改为username或者任意其他phone都可以,如下:AppUser.php模型增加

        /**
        * 取消passport默认使用email+password作用验证条件
        * @param : $username --- request()->input('username')
        * @return : usermodel
        * date: 2019年11月27日下午3:02:13
        * author: xzz
        */
        public function findForPassport($username)
        {
            $credentials = [];
            filter_var($username, FILTER_VALIDATE_EMAIL)?$credentials['email'] = $username:$credentials['username'] = $username;
            
            return self::where($credentials)->first();
        }

    8、demo在laravel5.5的apphttpcontrollersPassportController.php里面。

    9、效果:

    10、验证token,直接使用系统的auth:api中间件进行认证即可。

  • 相关阅读:
    【MVC】过滤器
    【C#】开发可以可视化操作的windows服务
    【JS】导出table到excel,同时兼容FF和IE
    【.Net】文件并发(日志处理)--队列--Redis+Log4Net
    【.Net】从.NET平台调用Win32 API
    『录』最全前端资源汇集
    $.ajax()方法详解
    mvc的视图中显示DataTable的方法
    C# 对XML基本操作总结
    Ninject简介
  • 原文地址:https://www.cnblogs.com/xuzhengzong/p/11939847.html
Copyright © 2011-2022 走看看