首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用LDAP保护路由

使用LDAP保护路由
EN

Stack Overflow用户
提问于 2016-06-13 11:02:45
回答 1查看 203关注 0票数 0

我有点被什么东西弄糊涂了。对于身份验证,我使用的是LDAP,更具体地说是这个https://github.com/SaschaDens/ldap-connector

我使用的LDAP库实际上是在Laravel身份验证外观之上工作的。

一切都很好,我现在可以使用LDAP登录或退出。但是,当我登录时,我有一个更新用户按钮。这实际上是使用LDAP来获取用户所分离的所有组。所以我有三张桌子

代码语言:javascript
运行
复制
users
groups
users_groups

当按下按钮时,我会将所有用户添加到users表中。然后,我将所有唯一的组添加到组表中。最后一个表users_groups本质上是一个枢轴表,它将users_id链接到groups_id。

最后,我可以看到,例如,我是三个组的一部分,其中之一是管理组。通过这样做,我也可以看到这个小组的所有成员。

代码语言:javascript
运行
复制
$group = Group::where('groupName', 'admin')->first();
$users = $group->user;

现在有一些路线,我只想提供给管理员用户。我可以在Kernel.php中看到以下内容

代码语言:javascript
运行
复制
protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
];

目前,我只使用auth来确保用户已登录。显然,我还没有设置一个管理员,而且我认为我这样做的方式可能会出现问题,因为我正在创建自己的组表。

如何阻止只访问管理组成员的用户访问特定的路由?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-13 14:32:45

您可以通过创建一个新的路由中间件来做到这一点。

1)创建中间件类

代码语言:javascript
运行
复制
php artisan make:middleware AdminMiddleware

2)向AdminMiddleware类中添加身份验证逻辑

代码语言:javascript
运行
复制
if(Auth::user()->inGroup('GROUPNAME')) 
{
    return $next($request);
}
else
{
    return view('auth.login')->withErrors('You are not logged in');
}

3)将新的中间件添加到$routeMiddleware中

代码语言:javascript
运行
复制
'admin' => 'App\Http\Middleware\AdminMiddleware',

4)将中间件别名添加到您希望保护的路由中。

代码语言:javascript
运行
复制
Route::get('admin', [
    'as' => 'admin',
    'middleware' => 'admin',
    'uses' => 'AdminController@getAdminPage'
]);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37788098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档