标签: middleware

什么是二进制标准

我一直在阅读 COM,其中提到了二进制标准以及如何使语言独立成为可能。实际上什么是二进制标准?在我看来,二进制意味着机器级代码,如果它意味着机器语言,那它怎么可能是独立的呢?

.net com dcom middleware

3
推荐指数
1
解决办法
2115
查看次数

file_get_contents 不与承载一起使用

我不断收到此错误

警告:file_get_contents 无法打开流:HTTP 请求失败!HTTP/1.1 401 未经授权

代码

$url = BASE_URL . 'api/v1/users';
$options = array('http' => array(
    'method'  => 'GET',
    'header' => 'Authorization: Bearer '.$token
));
$context  = stream_context_create($options);
$response = file_get_contents($url, false, $context);
Run Code Online (Sandbox Code Playgroud)

我与 api 一起使用的中间件通过 url 参数或标头接受授权;

如果我在参数中使用令牌,它可以工作,但无法通过服务器上的标头发送它,导致在本地主机上工作,

该请求是通过不记名令牌授权的,我没有任何用户名和密码来授权该请求,如下所示,我仅在 url 参数中使用令牌。

知道为什么吗?在不更改所有卷曲请求的情况下我能做什么

$result = file_get_contents(BASE_URL . 'api/v1/users?authorization='.$token, false);
$response = json_decode($result, true);
Run Code Online (Sandbox Code Playgroud)

php middleware slim

3
推荐指数
1
解决办法
1万
查看次数

如何在中间件 Laravel 5 中捕获“尝试次数过多”异常

我正在构建我的 API,并且成功地捕获了我在路由周围设置的中间件上的一些错误,如下所示:

Route::group(['middleware' => \App\Http\Middleware\ExceptionHandlerMiddleware::class], function() {

    Route::resource('/address', 'AddressController');

    Route::resource('/country', 'CountryController');

    Route::resource('/phone', 'PhoneController');

    Route::resource('/user', 'UserController');
});
Run Code Online (Sandbox Code Playgroud)

中间件设法捕获以下异常:

  • Illuminate\Database\Eloquent\ModelNotFoundException
  • Illuminate\Validation\ValidationException
  • Exception

这太棒了。我还知道控制路线中尝试次数的节流机制。因此,我通过邮递员攻击了我的路线http://localhost:8000/api/user,直到出现错误too many attemp

异常在位于以下位置的文件中引发:

/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php
Run Code Online (Sandbox Code Playgroud)

由于这个论坛主题,我还设法获得了它抛出的异常类型:Symfony\Component\HttpKernel\Exception\TooManyRequestsHttpException

所以最后我的中间件看起来像这样:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Validation\ValidationException;
use Symfony\Component\HttpKernel\Exception\TooManyRequestsHttpException;
use Exception;

class ExceptionHandlerMiddleware
{
    public function handle($request, Closure $next)
    {
        $output = $next($request);

        try {
            if( ! is_null( $output->exception ) ) {
                throw new $output->exception;
            }

            return $output;
        }
        catch( TooManyRequestsHttpException $e ) { …
Run Code Online (Sandbox Code Playgroud)

php middleware throttling laravel laravel-5

3
推荐指数
1
解决办法
1万
查看次数

Laravel中如何读取URL参数

我是初学者,正在尝试创建一个推荐系统。以下是示例网址

http://dev.lea.com/register?ref=mh2HPLpVSn
Run Code Online (Sandbox Code Playgroud)

我尝试获取推荐字符串。我怎样才能单独获得?是否需要中间件来获取cookie?如果是,那么中间件的代码是什么?我如何在 RegisterController 中获得推荐参考?

这是我的注册控制器。

<?php

namespace Lea\Http\Controllers\Auth;

use DB;
use Lea\User;
use Lea\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Http\Request;
use Cookie;

class RegisterController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Register Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles the registration of new users as well as their
    | validation and creation. By default this controller uses a trait to
    | provide this functionality without requiring any additional code.
    |
    */

    use RegistersUsers;

    /**
     * Where to redirect users after …
Run Code Online (Sandbox Code Playgroud)

middleware routes referrals laravel laravel-middleware

3
推荐指数
1
解决办法
2万
查看次数

特定路由上的中间件

在 中go-chi,在单个路由级别设置中间件,而不仅仅是针对所有路由全局设置

// Routes creates a REST router
func Routes() chi.Router {
    r := chi.NewRouter()
    r.Use(middleware.Captcha)

    r.Post("/", Login)

    return r
}
Run Code Online (Sandbox Code Playgroud)

如何Login指定唯一的中间件或从通用中间件中排除?

middleware http go go-chi

3
推荐指数
1
解决办法
2976
查看次数

将对象传递给在 nodejs 中用作中间件的路由文件

当我的应用程序启动时,会创建一个对象,该对象在整个应用程序中的多个文件中使用。在我的 app.js 文件中,我需要几个包含我的路由的文件。这些路由需要访问在 app.js 中创建的对象,所以我试图将它传递给这些文件中的每一个。下面是其中一个文件的示例。

测试.js

const express = require('express');
const router = express.Router();

router.use('/api', router);

router.post('/testRoute', (req, res, next) => {
    if(globalVariable.abc) { //globalVariable is the variable created in app.js
        //do some logic
    }
    res.json({
        message: "Test Route Success"
    })    
});

module.exports = router;
Run Code Online (Sandbox Code Playgroud)

应用程序.js

const assessmentRoutes = require('./routes/test');
app.use(assessmentRoutes);
Run Code Online (Sandbox Code Playgroud)

我试图让变量传入的一种方法是将 test.js 中的路由包装在一个函数中,该函数采用这样的变量。

module.exports = function(globalVariable) {
    router.post('/testRoute', (req, res, next) => {
    if(globalVariable.abc) { //globalVariable is the variable created in app.js
        //do some logic
    }
    res.json({
        message: "Test …
Run Code Online (Sandbox Code Playgroud)

middleware node.js express

3
推荐指数
1
解决办法
3402
查看次数

Nodejs with express:为什么我的中间件执行两次这里是代码

这是我的代码在这里..!

const express = require('express');
const app = express();

let myFunc = function (req, res, next) {
    console.log('This is middleware');
    next();
}

app.use(myFunc);

app.get('/', (req, res) => {
    console.log('This is get /');
    res.send('Hello World!');
});

app.listen(3000, () => {
    console.log('Server is running at port 3000....');
});
Run Code Online (Sandbox Code Playgroud)

在此,我创建了一个名为 myFunc 的中间件,但输出并不像我想象的那样

Server is running at port 3000....
This is middleware
This is get /
This is middleware
Run Code Online (Sandbox Code Playgroud)

javascript middleware node.js express

3
推荐指数
2
解决办法
3066
查看次数

如何使用 bot builder sdk v4 中的中间件区分 Bot 到用户和用户到 Bot 消息?

我在 sdk V4 Bot 中实现了一个中间件来拦截 bot 和用户之间的每条消息并记录该自定义 mongo Db。我正在尝试为使用 SDK v4 构建的 Bot 实现类似的概念。看起来我可以使用以下代码添加中间件,但是不确定如何区分机器人到用户和用户到机器人之间的消息。

V3 机器人代码

bot.use({
    botbuilder: function (session, next) {
        logUserConversation(session)
        next()
    },
    send: function (event, next) {
        logBotsConversation(event)
        next()
    }
})
Run Code Online (Sandbox Code Playgroud)

中间件的 V4 bot 代码

botAdapter.use(async (turnContext, next) => {
    // How to find which messages/activity object is from user to bot

    await next();
    // How to find which messages/activity object is from bot to user.
});
Run Code Online (Sandbox Code Playgroud)

middleware node.js microsoft-cognitive botframework

3
推荐指数
1
解决办法
810
查看次数

Fastify 中间件 - 访问查询和参数?

试图让中间件在 Fastify 中工作 - 我似乎无权访问查询或参数。文档说:

Fastify 支持开箱即用的 Express/Restify/Connect 中间件,这意味着您只需插入旧代码即可运行!(顺便说一下,更快)

但举个简单的例子:

fastify.use(function(req, res, next) {
  console.log('req.query', req.query);   // undefined
  console.log('req.params', req.params); // undefined
  next();
});
Run Code Online (Sandbox Code Playgroud)

如果我添加/限制网址,则相同:

fastify.use('/foo', function(req, res, next) {
Run Code Online (Sandbox Code Playgroud)

我确定我遗漏了一些东西,但文档确实声称它“正常工作”-如果您无法访问 qs,我看不出怎么办?

[我想我可以重写以使用钩子,但我真的很感兴趣我打算如何使用中间件来做到这一点]

谢谢

javascript middleware node.js fastify

3
推荐指数
1
解决办法
3452
查看次数

如何对使用 Response.OnStarting 的 .NET 中间件进行单元测试

因此,我创建了一个 .net 核心中间件,用于向响应添加标头。我没有找到对这个中间件进行单元测试的方法,因为它使用OnStarting回调,我无法想象如何模拟或强制执行它。

这是中间件的示例:

public async Task InvokeAsync(HttpContext context, RequestDelegate next)
{
    context.Response.OnStarting(() =>
    {
        context.Response.Headers.Add("Name", "Value");

        return Task.CompletedTask;
    });

    await next(context);
}
Run Code Online (Sandbox Code Playgroud)

由于中间件接口需要 的具体实例HttpContext,例如,我无法想象使用 来模拟它的方法FakeItEasy

c# testing middleware xunit asp.net-core

3
推荐指数
2
解决办法
5207
查看次数