小编Sev*_*kov的帖子

如何模拟 LDAP Laravel 身份验证进行单元测试

在我的 Laravel 项目中,我使用Ldap-connector 来针对 LDAP 对用户进行身份验证

Auth 开箱即用。

在 /app/providers/AuthServiceProvider.php 我定义了一个策略来管理 LDAP 用户访问,例如:

public function boot(GateContract $gate)
{
    $this->registerPolicies($gate);

    $gate->define('rewards', function ($user) {
        return ($user->getAdLDAP()->inGroup('Admin') || $user->getAdLDAP()->inGroup('Marketing')) ? true : false;
    });
    // other policies 
    // ...
}
Run Code Online (Sandbox Code Playgroud)

在控制器中,我检查登录用户的策略,例如:

class RewardController extends Controller {
    public function __construct($handler = null) {
        $this->authorize('rewards');
    }
    // other methods
    // ...
}
Run Code Online (Sandbox Code Playgroud)

一切正常,如果登录用户没有MarketingAdmin组,控制器将抛出403异常。

现在,对于我的phpunit测试,我需要模拟 LDAP 身份验证并提供对控制器的访问以测试它的方法,否则策略会抛出This action is unauthorized.错误

由于实现了 ldap auth …

phpunit unit-testing mocking laravel laravel-5.2

5
推荐指数
1
解决办法
1463
查看次数

流明中间件排序(优先级)

我正在使用 "laravel/lumen-framework": "5.7.*"

我有两个中间件,第一个AuthTokenAuthenticate应该应用于所有路由,因此它的定义bootstrap/app.php

$app->middleware([
    App\Http\Middleware\AuthTokenAuthenticate::class
]);
Run Code Online (Sandbox Code Playgroud)

另一个中间件的定义如下

$app->routeMiddleware([
    'auth.token' => Vendor\Utilities\Middleware\AuthToken::class
]);
Run Code Online (Sandbox Code Playgroud)

并且仅适用于某些特定路线。

我需要auth.token先执行,然后AuthTokenAuthenticate才能找到方法,因为流明先执行$app->middleware路线。

Laravel $middlewarePriority正是我需要的,但是我如何在流明中处理它呢?

php middleware laravel lumen

5
推荐指数
1
解决办法
112
查看次数

正则表达式验证地址字符串不包含邮政信箱模式

我正在Laravel regex validation用户提供的地址字段上使用。

我发现多个帖子有助于验证地址字符串是否为有效的邮政信箱,例如此处此处,但我需要执行相反的操作并确保提供的字符串不是邮政信箱。

PS 我不需要进行任何地址验证,只是想确保它不是邮政信箱。

我发现这条规则非常有用,因为它检查邮政信箱号码是否存在

/^\s*(.*((p|post)[-.\s]*(o|off|office)[-.\s]*(b|box|bin)[-.\s]*)|.*((p|post)[-.\s]*(o|off|office)[-.\s]*)|.*((p|post)[-.\s]*(b|box|bin)[-.\s]*)|(box|bin)[-.\s]*)(#|n|num|number)?\s*\d+/i
Run Code Online (Sandbox Code Playgroud)

有人可以帮我为这个或类似的东西创建相反的表达吗?

我怀疑我必须使用负前瞻?!

php regex validation laravel laravel-validation

4
推荐指数
1
解决办法
4489
查看次数