小编Mr.*_*eer的帖子

在中间件 .net core 2.0 中获取访问令牌

在 .net 核心中的一个身份验证过程之后,我试图在我的中间件类中获取 access_token。

我正在使用此代码在我的控制器中获取我的令牌

var accessToken = await HttpContext.GetTokenAsync("access_token");
Run Code Online (Sandbox Code Playgroud)

但是,当我想在身份验证部分之后调用的中间件上获取它时GetTokenAsync,HttpContext 不存在该方法。

我的中间件类是这个

public class Session
    {
        private readonly RequestDelegate _next;
        public Session(RequestDelegate next)
        {
            _next = next;
        }

        public async Task InvokeAsync(HttpContext httpContext)
        {
            var accessToken = // here I want to get my token

            await _next(httpContext);
        }
    }
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的方法,我一直在寻找答案,但我仍然没有解决方案。

我认为中间件和控制器中的 HttpContext 类是不同的,但我不知道如何在中间件中解决这个问题。

有人知道如何在中间件调用中访问令牌,或者甚至可能吗?

我的启动电话是这些,也许它也很有用。

app.UseAuthentication();
app.UseHttpsRedirection();
app.UseMiddleware<Session>();
app.UseMvc();
Run Code Online (Sandbox Code Playgroud)

c# authentication asp.net-mvc .net-core asp.net-core

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

C# 中的一行声明、比较和返回

我想知道是否可以执行类似以下代码的操作:

_ = name.Split(' ') => names.Count() > 1 ?
                new Tuple<string, string>(string.Join(" ", names.Take(names.Count() - 1)), names.Last()) :
                new Tuple<string, string>(name, string.Empty)) ;
Run Code Online (Sandbox Code Playgroud)

names的结果在哪里name.Split(' ')

我不知道如何访问这个结果而不在单独的行中声明它,例如:

var names = name.Split(' ');
Run Code Online (Sandbox Code Playgroud)

这行是我想避免的,但我也不想每次调用 Split 函数时都调用。

有人知道如何解决这个问题或者是否有可能?

非常感谢。

c# lambda functional-programming

0
推荐指数
1
解决办法
645
查看次数

快速/优雅的方法来查找List &lt;keys&gt;中不存在的字典键

我有一本字典A,我想以int快速适当的方式查找B中未列出的键。

Dictionary<int,object> A;

List<int> B;
Run Code Online (Sandbox Code Playgroud)

我想要

A KEYS ARE NOT EXISTING IN B

有没有一种快速而优雅的方法呢?

c# dictionary

-1
推荐指数
1
解决办法
77
查看次数