xigemall/user-sso

There is no license information available for the latest version (1.0.0) of this package.

xigemall user-sso

1.0.0 2019-06-14 14:48 UTC

This package is auto-updated.

Last update: 2024-10-15 02:56:26 UTC


README

1 远程包

install

composer require xigemall/user-sso

configure

php artisan vendor:publish --provider="Xigemall\UserSso\UserSsoServiceProvider"

add to your config/auth.php

'guards' => [
    'api' => [
        'driver' => 'sso',
        'provider' => 'sso',
    ],
],
'providers' => [
    'sso' => [
        'driver' => 'sso',
    ]
],

update to your config/sso.php

return [
    // 单点登录地址
    'url' => env('SSO_URL', 'http://localhost'),

    // client_id(客户端ID)
    'client_id' => env('CLIENT_ID', 1),

    // client_secret(客户端密钥)
    'client_secret' => env('CLIENT_SECRET', ''),

    // redirect_uri 授权时的重定向
    'redirect_uri'=>env('REDIRECT_URI','http://localhost/callback'),

    // 自增key (字段的名称) 默认id
    'increment_key' => 'id',

    // 密码字段 默认password
    'password' => 'password',

    // 获取当前用户接口地址
    'current_user_path' => '/api/current_user',   
];

2 本地包

1.项目根目录添加packages/xigemall目录

project 
    app
    config
    packages //添加
        xigemall //添加
            user-sso //扩展包(github下载的该项目)
    composer.json

2.在项目(project)的composer.json添加repositories

"repositories": [
        {
            "type": "path",
            "url": "packages/xigemall/user-sso"
        }
    ],

3.install

composer require xigemall/user-sso

4.configure

php artisan vendor:publish --provider="Xigemall\UserSso\UserSsoServiceProvider"

add to your config/auth.php

'guards' => [
    'api' => [
        'driver' => 'sso',
        'provider' => 'sso',
    ],
],
'providers' => [
    'sso' => [
        'driver' => 'sso',
    ]
],

update to your config/sso.php

return [
         // 单点登录地址
            'url' => env('SSO_URL', 'http://localhost'),
        
            // client_id(客户端ID)
            'client_id' => env('CLIENT_ID', 1),
        
            // client_secret(客户端密钥)
            'client_secret' => env('CLIENT_SECRET', ''),
        
            // redirect_uri 授权时的重定向
            'redirect_uri'=>env('REDIRECT_URI','http://localhost/callback'),
        
            // 自增key (字段的名称) 默认id
            'increment_key' => 'id',
        
            // 密码字段 默认password
            'password' => 'password',
        
            // 获取当前用户接口地址
            'current_user_path' => '/api/current_user',
];

获取用户(前端请求headers添加Authorization)

    $response = $client->request('GET', '/api/user', [
        'headers' => [
            'Accept' => 'application/json',
            'Authorization' => 'Bearer '.$accessToken,
        ],
    ]);

三方登陆

授权登陆地址(获取code)
    /api/redirect

回调地址(获取accessToken)
    /api/access_token

重写登陆

class SsoController extends Controller
{
    use UserSso;
    /**
     * 请求令牌
     * 授权时的重定向
     * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
     */
    public function redirect()
    {
        $query = http_build_query([
            'client_id' => $this->clientId,
            'redirect_uri' => $this->redirectUri,
            'response_type' => 'code',
            'scope' => '',
        ]);
        return redirect($this->url . '/oauth/authorize?' . $query);
    }

    /**
     * 将授权码转换为访问令牌
     */
    public function callback(Request $request)
    {
        $code = $request->code;
        $url = $this->url.'/oauth/token';
        $data = [
            'grant_type' => 'authorization_code',
            'client_id' => $this->clientId,
            'client_secret' =>$this->clientSecret,
            'redirect_uri' => $this->redirectUri,
            'code' => $code,
        ];
        $response = UserSsoCurl::post($url, $data);

        return $response['access_token'];
    }
}