使用 Laravel 检查内部数据库中的 CAS 用户

Checking CAS user in internal database with Laravel

我正在编写一个 Laravel(5.7 with dev-master framework)应用程序供学校内部使用,我正在使用他们的 CAS 服务器进行身份验证,但我想检查用户是否已经在我自己的数据库中注册了。

我已经使用 https://github.com/subfission/cas 实现了 CAS 登录。

我不知道我是否应该将 CAS 与 "native" Laravel 身份验证集成(我什至不知道该怎么做)或编写一个中间件或类似的东西(也不知道该怎么做 :P).

ps: 英语不是我的母语,所以如果有任何书写错误请放轻松

好吧,刚刚检查了他们的 wiki,该死的!很简单;安装包后,您需要在 $routeMiddlewares 属性:

末尾的 app/Http/Kernel.php 添加两个全新的中间件
protected $routeMiddleware = [
         //snap
        'cas.auth'  => \Subfission\Cas\Middleware\CASAuth::class,
        'cas.guest' => \Subfission\Cas\Middleware\RedirectCASAuthenticated::class,
    ];

很好,现在 运行 php artisan vendor:publish --provider=Subfission\Cas\CasServiceProvider 所以 cas.php 配置文件将添加到 config 文件夹。打开它并输入您学校的 CAS 配置。

很好,现在你需要做的就是在需要CAS认证时使用cas.auth中间件:

//web.php
Route::get('user/profile','UserController@profile')->middleware('cas.auth');

这个中间件只是检查当前用户是否登录到 CAS 服务器(继续到控制器)或者用户没有登录到 CAS 服务器(重定向到 CAS 服务器登录页面并在身份验证成功时重定向回来)。

祝你好运。