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

来源:互联网 发布:tp link软件升级 编辑:程序博客网 时间:2024/06/18 12:36


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。也就不用登录了。

达到目的。



-完-