Asp .Net Core,Identity Server 4,检查用户是否被授权而没有授权属性

时间:2018-12-06 20:27:46

标签: asp.net-core authorization identityserver4

这是我的代码,可以正常工作。如果得到授权,它可以工作,否则,它将我重定向到身份服务器,然后重新登录。

this.getStory()

如果用户未获得授权,我想返回另一个视图,并且不要将其重定向到身份服务器。这就是我尝试过的方式。

[Authorize]
public async Task<IActionResult> Index()
{                
    return View("../Secure/Index");
}

但是它不起作用。 User.Identity.IsAuthenticated 始终为false。甚至当我以前在身份服务器上登录时,似乎[Authorize]属性还是在做一些设置User.Identity.IsAuthenticated的事情。

我的问题是,我怎么知道我没有属性被授权?

谢谢

1 个答案:

答案 0 :(得分:0)

我花了三天的时间弄清楚该如何完成并得出结论这不可能完成。微软真的很棒。

我最近得到的是重定向到另一个 网址:https://stackoverflow.com/a/43631950/4909067 但是,当然,.net core 2.1中的命名是不同的。

services.AddAuthentication(options =>
{
    ...
})
.AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
    {
        ...
        options.Events = new OpenIdConnectEvents()
        {
            OnRedirectToIdentityProvider = async (context) =>
            {
                Console.WriteLine(  );

                if (context.HttpContext.Request.Path.Value != "/Account/SignInWithOpenId")
                {
                    context.HttpContext.Response.Redirect("/public");
                    context.HandleResponse();
                }

                await Task.CompletedTask;
            },            
        };
        ...
    })

但这不是我想要的。我不想更改网址。我只想在用户登录时提供一些内容,而在用户未登录时提供不同的内容。 在相同的网址上。我应该在这个愚蠢的.net内核上选择node js

相关问题