Laravel 5.5 中用户登录时如何对附加字段进行判断


Laravel 5.5用的自带的登录程序,业务需要,在users表中增加了个是否激活的字段, active 为1是已激活,为0是未激活。


要想对这个做判断有两个方法,一个是自定写登录事件,虽然以前也写过,工作也挺正常,但是最近懒癌发作,就是不想写。


另一个方法是修改自带的登录程序,这个以前也做过,不过都改改跳转地址,帐号字段的事。网上找了一圈,有两个方法可以简单解决。


1,在LoignController中覆写authenticated方法,


    /**
     * The user has been authenticated.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  mixed  $user
     * @return mixed
     */
    protected function authenticated(Request $request, $user)
    {
        if($user->active == 1){
        // 可以登录
        return redirect()->intended($this->redirectPath());
     }
     $this->logout($request);
    }

这个方法的原理就是在用户登录成功后,去判断是否激活,没激活的直接logout。 这个方法看上去不错,可是 有个问题,既然激活的不能登录,那直接在登录前就判断出来,何必登录之后再退出呢?这不是脱了裤子放屁吗。


2,在LoginController中覆写credentials方法


    /**
     * Get the needed authorization credentials from the request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    protected function credentials(Request $request)
    {
        $credentials = $request->only($this->username(), 'password'); // or add another item here if it's from the request
        $credentials['can_login'] = 1;


        return $credentials;
        //return $request->only($this->username(), 'password');
    }

这个方法是告诉程序通过哪几个条件查询用户记录,在用户登录时要去数据表里查询相关记录时加上是否激活的限制,没激活的自然是查不记录的,就会返回false。也就不用登录了。

达到目的。



-完-






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值