C# .net核心标识服务器Api调用401返回登录

C# .net核心标识服务器Api调用401返回登录,c#,asp.net-core,.net-core,identityserver4,C#,Asp.net Core,.net Core,Identityserver4,我是identity server 4的新手,除了1之外,我已经了解了大部分内容: 在我的控制器(页面)的第1页中,我正在调用一个API,如果这个API返回401,我如何用我当前操作的返回URL重定向到登录页面。(我正在使用.NETCore2.0) 我已经试过了: public IActionResult Contact() { ViewData["Message"] = "Your contact page."; String token = HttpC

我是identity server 4的新手,除了1之外,我已经了解了大部分内容:

在我的控制器(页面)的第1页中,我正在调用一个API,如果这个API返回401,我如何用我当前操作的返回URL重定向到登录页面。(我正在使用.NETCore2.0)

我已经试过了:

public IActionResult Contact()
    {
        ViewData["Message"] = "Your contact page.";
        String token = HttpContext.GetTokenAsync("access_token").Result;

        WebRequestResult<List<string>> result = WebRequest.SecureGet<List<string>>(
                "http://localhost:52426",
                new List<string> { "application/json" },
                "/api/Values",
                token,
                new Dictionary<string, string>()                    
            );

        if (result.ResultStatusCode != System.Net.HttpStatusCode.OK) {
            Task.WaitAll(Task.Run(async () => {
                await HttpContext.SignOutAsync("Cookies");
                await HttpContext.SignOutAsync("oidc");

            }));

        }
        return View();
    }
public IActionResult联系人()
{
ViewData[“消息”]=“您的联系人页面。”;
String token=HttpContext.GetTokenAsync(“访问令牌”).Result;
WebRequestResult结果=WebRequest.SecureGet(
"http://localhost:52426",
新列表{“application/json”},
“/api/Values”,
代币
新字典()
);
if(result.ResultStatusCode!=System.Net.HttpStatusCode.OK){
Task.WaitAll(Task.Run(异步()=>{
等待HttpContext.SignOutAsync(“Cookies”);
等待HttpContext.SignOutAsync(“oidc”);
}));
}
返回视图();
}

它只将我重定向到注销页面,这不是我所需要的。

此身份验证仅针对
Contact()
方法,还是需要保护更多的方法?您好,Contact()方法调用我的api,在我的测试用例场景中,我的api将不会被身份验证,并将返回401,这是我想要的。从这一点上,我将了解如何检索登录URI并重定向到那里(标识登录URI)。您是否可以使用帐户控制器中的注销操作将用户发送到您需要的地方?您是否尝试过配置中间件,而不是为
Contact()
方法手动执行此操作,例如,要重定向到设置了返回URL的登录页面?您好,是的,我试图创建一个自定义返回URL,但该URL不起作用。