lsfiege/cas

集中式应用登录变得简单,仅限在小型/内部项目中用于演示或测试

此包的规范仓库似乎已消失,因此已冻结此包。

1.0.9 2019-03-07 14:09 UTC

This package is auto-updated.

Last update: 2019-11-30 23:16:15 UTC


README

集中式应用登录变得简单,仅限在小型/内部项目中使用或用于演示和学习/测试

68747470733a2f2f6c61726176656c2e636f6d2f6173736574732f696d672f636f6d706f6e656e74732f6c6f676f2d6c61726176656c2e737667

要求

  • Laravel 5.3|5.4|5.5|5.6|5.7
  • PHP 7.1+

安装

服务器

使用composer安装此包。

composer require lsfiege/cas

对于Laravel 5.3和5.4,在config/app.php中添加,Laravel 5.5+有包自动发现

'providers' => [
    ...
    \Lsfiege\CAS\CASServiceProvider::class,
]

'aliases' => [
    ...
    'CASServer'=> \Lsfiege\CAS\Facades\CASServer::class,
    'CASClient'=> \Lsfiege\CAS\Facades\CASClient::class
]

发布config/cas.php文件。

php artisan vendor:publish --provider="Lsfiege\CAS\CASServiceProvider"

运行迁移

php artisan migrate

现在为服务器创建cas密钥,您可以使用以下Artisan CLI命令创建它

php artisan cas:generate-key

现在这个密钥存储在您的.env文件中,将其复制到客户端的.env文件中的密钥CAS_KEY=your-cas-key-here

最后,添加您的允许的客户端源,不要以逗号结尾,例如:http://foo.bar

'allowed' => [
    'https://mysite.bar',
],

客户端

使用composer安装此包。

composer require lsfiege/cas

发布config/cas.php文件。

php artisan vendor:publish --provider="Lsfiege\CAS\CASServiceProvider"

config/cas.php文件中的type值从server更改为client

在您的.env文件中设置这些选项

CAS_KEY=your-server-cas-key-here
CAS_HOST=https://cas.host

CAS_HOST是您的服务器的http url,不带结尾斜杠。

通过添加Lsfiege\CAS\Traits\HasCASAccess特质来编辑您的app/User.php文件

...
use Lsfiege\CAS\Traits\HasCASAccess;

class User extends Authenticatable
{
    use Notifiable, HasCASAccess;
    
    ...    
}

现在将这两个方法添加到LoginController

namespace App\Http\Controllers\Auth;
...
use Illuminate\Http\Request;
use Lsfiege\CAS\Facades\CASClient;
class LoginController extends Controller
{
    ...
    
    public function showLoginForm()
    {
        return CASClient::showLoginForm();
    }
    
    public function login(Request $request)
    {
        return CASClient::login($request);
    }
}

编辑您的ForgotPasswordController

namespace App\Http\Controllers\Auth;
...
use Lsfiege\CAS\Facades\CASClient;

class ForgotPasswordController extends Controller
{
    ...
    
    public function showLinkRequestForm()
    {
        return CASClient::resetPasswordRedirect();
    }
}

最后编辑RegisterController如下

namespace App\Http\Controllers\Auth;
...
use Lsfiege\CAS\Facades\CASClient;

class RegisterController extends Controller
{
    ...
    protected function create(array $data)
    {
        $user = User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);

        if (CASClient::register($data)) {
            return $user;
        };
    }

    public function showRegistrationForm()
    {
        return CASClient::showRegistrationForm();
    }
}

要更新客户端和服务器中App\User中给定用户的密码,请使用resetPassword($user, $password)方法。

示例

class UserController extends controller{
    ...
    public function changePassword(User $user, $password){
        $user->resetPassword($user, $password);
        
        ...
    }
}

如果您需要覆盖数组$data以在您的应用中创建用户,在User.php类中添加此方法

use HasCASAccess {
    createAuth as protected createUserAuth;
}

...

/** @override */
public static function createAuth($data)
{
    $role = Role::whereName('user')->first();

    $data['role_id'] = $role->id; 
    
    // Other custom params here

    return self::createUserAuth($data);
}

并在您的RegisterController中添加

protected function create(array $data)
{
    $role = Role::whereName('user')->first();

    $user = User::create([
        'name' => $data['name'],
        'role_id' => $role->id,
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
    ]);

    if (CASClient::register($data)) {
        return $user;
    };
}

两者

您可以在配置文件中指定您的用户模型

'usersModel' => \App\User::class,