• laravel后台账户登录验证(5.5.48版本)


      首先我是菜鸟,对laravel框架也不是很熟悉,突然有一天心血来潮就想研究一下laravel的后台登录用户登录的流程,

        虽然公司项目中有这样的一套流程,也看了好几遍,越看越简单,越看我就越会了,当自己写的时候,   你懂的   一看啥都会  一写你会啥?不扯了  切入正题吧。

        第一步:配置config文件

        a:配置config/auth.php文件

      'guards' => [
            //后台
            'admin' => [
                'driver' => 'session',  
                'provider' => 'admins',   
            ],
    
        ],
      'providers' => [
      'admins' => [
      'driver' => 'eloquent',
      'model' => HiCommonModelAuthAdmins::class, //登录用户表的模型
      ],
      ],

            b:配置的HiCommonModelAuthAdmins.php文件内容 (模型必须要继承Authenticatable

    <?php
    namespace HiCommonModel;
    use IlluminateFoundationAuthUser as Authenticatable;
    class AuthAdmins extends Authenticatable
    {
        protected $table = 'admins';
        protected $primaryKey = 'id';
        protected $guarded = [];
    }
    

           c:还有.env文件里面关于session的设置,我这里是使用默认的文件方式,  你也可以使用redis等记录。

      第二步:登录账户的验证

        a:根据自己的业务逻辑验证,这里提一点密码验证

    //这里会自动将明文密码、和之前的密文密码比较 相同返回true, 否则返回false  

    $check = Hash::check( 用户当前输入的密码(明文), 账户之前设置的密码(密文) );

        b:根据业务需求昨晚基本验证后,重点的来了  使用  IlluminateSupportFacadesAuth 来干点啥   

             

    use IlluminateSupportFacadesAuth
    //attempt会根据传的参数去用户表中去查找数据,查到数据后会将数据保存到session中的

    $arr_data = [
        'username' => trim((string)$data['username']),
        'password' => trim((string)$data['pass'])
    ];
    //这里的admin就是auth.php文件 guards 参数中配置的admin
    Auth::guard('admin')->attempt($arr_data)  

      

                   第三步:大致就是这个流程了 , 最后可以通过

    Auth::guard('admin')->user()    //获取当前登录用户的详细信息
    Auth::guard('admin')->id()    //获取当前登录用户的主键id

    。。。。。。。。。。。。完了?  没有 接着来

    以上步骤我都完成的非常出色,这个你们是看不到的,同事也看不到,他们只会看到最总结果:  账户登录成功   成功之后后干嘛呢? 当然你通过跳转到后台的主页面了,

    跳了吗?跳了,跳成功了吗?成功了。有问题? 好像有一点问题?  啥?  不是跟出色吗?  呃。。。。

    啥问题?  账户登录成功跳转页面后,在新页面使用 Auth::guard('admin')->user()获取当前登录用户信息返回的是null  第一反应 咦?刚才打印还有呀,这里就没有了?代码写错了?检查之后代码没有问题,登录页面确实能打印

    跳转页面之后也确实返回null,  既然代码没问题 那就找问题呗。 先从配置文件开始,再到验证的业务流程都没有问题,还是没有找到关键的问题所在,(这时已经是下班点了,也就没有继续的查找,心想这估计睡一觉就会自动好,之前好想有这样的事情)。

    打死你都不相信,这个问题出在路由这里  你信吗?  反正刚开始我是不会信的。

    'middleware' => ['web','admin']

     后台所有的路由都要用wen这和中间件?为啥 这个web中间件定义在app/Http/Kernel.php里面,代码我就不贴了,自己点进去看一下就明白了,简单说明一下吧,这个web中间件加载了一些基本的东西、例如cookie、seesion开启,token验证等,这里看一下就会懂为啥非要使用web中间件了。

    如果引用了web中间件报错,我调用的时候就有点问题,啥问题呢 心不细的问题,估计有很多同学会遇到,  我是用ajax提交的账户信息,居然只提交了账户和密码这两个字段过来,  所有在调用web中间件是VerifyCsrfToken这个就会报错,对头没有传 _token这个字段,所以报错, 然后在表单中添加一个隐藏域  提交 登录  跳转  打印用户信息  ok 。。。。。  莫得问题了    旋转跳跃 我闭着眼 

    文章写的有点乱,也不太会表达,如果有相同问题的同学看不懂自己找我也行 , 如果有帮助  请666一下  

      

      

  • 相关阅读:
    QMainWindow透明背景
    在Xcode中产看QString的数据
    使用QtConcurrent在线程池中执行网络操作
    QThread和QObject的调用方法总结
    策略模式 C++实现
    【转】单元测试要做多细?
    Mac系统添加QQ邮箱帐号提示无法验证
    Qt半透明对话框
    SVD的几何意义,以及在去噪,推荐系统中的应用
    BP神经网络原理及python实现
  • 原文地址:https://www.cnblogs.com/hinq/p/12090692.html
Copyright © 2020-2023  润新知