【问题标题】:How do I integrate OAuth client authentication alongside Laravel standard authentication?如何将 OAuth 客户端身份验证与 Laravel 标准身份验证集成?
【发布时间】:2014-09-28 19:53:33
【问题描述】:

我已经在谷歌上搜索了很长一段时间,以获取有关如何将 OAuth(v1.0 和 v2.0)与标准 Laravel 4 Eloquent 身份验证驱动程序集成的一些想法或指南。

基本上,我希望网站访问者能够通过他们现有的 Google、Facebook 或 Twitter 帐户,或通过标准的电子邮件/密码身份验证来创建一个帐户。某些用户信息(例如电子邮件、名字和姓氏以及头像)对我来说很重要,因为它们存储在统一的users 表中。

到目前为止,我看过的项目似乎只支持 OAuth 并取消了标准方法。这些项目包括:eloquent-oauthoauth-4-laravel

在这一点上,我可能只是推出自己的解决方案,但我希望你们中的一些人可能对我有更好的建议!

TL;DR:我一直在努力寻找一种简单且安全的方法来允许在 Laravel 中进行 OAuth 和标准 Eloquent 用户身份验证。停下来。

【问题讨论】:

    标签: php authentication laravel oauth eloquent


    【解决方案1】:

    我认为最简单的方法是使用您提到的这个服务提供商“artdarek/oauth-4-laravel”,然后像往常一样存储这些值并登录。

     /**
     * Login user with facebook
     *
     * @return void
     */
    
    public function loginWithFacebook() {
    
        // get data from input
        $code = Input::get( 'code' );
    
        // get fb service
        $fb = OAuth::consumer( 'Facebook' );
    
        // check if code is valid
    
        // if code is provided get user data and sign in
        if ( !empty( $code ) ) {
    
            // This was a callback request from facebook, get the token
            $token = $fb->requestAccessToken( $code );
    
            // Send a request with it
            $result = json_decode( $fb->request( '/me' ), true );
    
            // store new user or login if user exists
            $validator = Validator::make($result, array(
                'email'=>'required|email|unique:users'
            ));
    
            if ($validator->passes()) {
                # Save user in DB
                $user = new User;
                $user->username = $result['name'];
                $user->email = $result['email'];
                $user->save();
            }else {
                $user = User::findByUsernameOrFail($result['name']);
            }
    
            Auth::login($user);
    
        }
        // if not ask for permission first
        else {
            // get fb authorization
            $url = $fb->getAuthorizationUri();
    
            // return to facebook login url
             return Redirect::to( (string)$url );
        }
    
    }
    

    【讨论】:

    • 是的,这确实很有意义。出于某种原因,我认为它必须比这更复杂,即服务提供者、单独的表等。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 2020-09-19
    • 1970-01-01
    • 2021-08-15
    • 2015-02-02
    • 1970-01-01
    • 2021-02-10
    相关资源
    最近更新 更多