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

Posted

技术标签:

【中文标题】使用 Laravel 检查内部数据库中的 CAS 用户【英文标题】:Checking CAS user in internal database with Laravel 【发布时间】:2019-06-25 13:27:16 【问题描述】:

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

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

我不知道我是否应该将 CAS 与“本机”Laravel auth 集成(我什至不知道该怎么做)或者编写一个中间件或类似的东西(不知道怎么做要么:P)。

ps:英语不是我的母语,所以请轻松解决任何书写错误

【问题讨论】:

【参考方案1】:

好的,刚刚检查了他们的wiki,该死的!安静简单;安装软件包后,您需要在 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 服务器登录页面并在身份验证成功时重定向回来)。

祝你好运。

【讨论】:

这是实现CAS的吧?我已经完成了(以及您编写的所有步骤),现在我需要检查 CAS 服务器返回的用户 ID 是否已在我自己的数据库中注册并在我的应用程序中“真正”验证它(可能使用 de native Laravel auth without password以某种方式?) 是的,并且 cas 身份验证是可靠的,所以显然您不希望在您的服务器上使用另一个身份验证系统,我想您想要的是当前用户的信息和服务器上经过身份验证的用户的数据库.假设这是你想要的,你可以通过自定义默认的cas.auth中间件来实现。

以上是关于使用 Laravel 检查内部数据库中的 CAS 用户的主要内容,如果未能解决你的问题,请参考以下文章

与laravel 4中的数据透视表存储关系

Laravel 4 内部服务器错误 500 和 HTML 表中的 TokenMismatchException 以使用 ajax 更新数据库

REST API 中的 CAS

使用 Laravel 和 ajax 的内部服务器错误

使用 Laravel 中的验证器检查两个表中两列的唯一性

了解redis事务的cas操作吗