lsfiege / cas
集中式应用登录变得简单,仅限在小型/内部项目中用于演示或测试
此包的规范仓库似乎已消失,因此已冻结此包。
1.0.9
2019-03-07 14:09 UTC
Requires
- guzzlehttp/guzzle: ^6.3
- laravel/framework: ~5.3.0|~5.4.0|~5.5.0|~5.6.0|~5.7.0|~5.8.0
README
集中式应用登录变得简单,仅限在小型/内部项目中使用或用于演示和学习/测试
要求
- 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,