Asp.net core mvc 使用windows身份验证时设置自定义身份验证方案

Asp.net core mvc 使用windows身份验证时设置自定义身份验证方案,asp.net-core-mvc,Asp.net Core Mvc,我正在尝试为我的mvc 6 asp.net 5 web应用程序编写自定义身份验证/授权。我已经使用 Microsoft.AspNet.Authorization.AuthorizationHandler Microsoft`.AspNet.Authorization.IAuthorizationRequirement 我可以跟踪代码,它似乎按照预期工作。如果用户符合要求,我执行context.successed(要求)并返回。但是,如果用户不匹配,我执行context.Fail()操作,我

我正在尝试为我的mvc 6 asp.net 5 web应用程序编写自定义身份验证/授权。我已经使用

Microsoft.AspNet.Authorization.AuthorizationHandler 
Microsoft`.AspNet.Authorization.IAuthorizationRequirement 
我可以跟踪代码,它似乎按照预期工作。如果用户符合要求,我执行context.successed(要求)并返回。但是,如果用户不匹配,我执行context.Fail()操作,我希望它重定向到一个cshtml页面,该页面显示“您未经授权使用此功能”。相反,它会出现一个空白网页。当我检查领事时,我可以看到代码返回了403禁止的错误。所以我需要知道如何将它重定向到页面。我已尝试将以下内容添加到“授权”属性:

在此处输入代码
[授权(Policy=“xyz”,ActiveAuthenticationScheme=“Cookie”)]

但当我这样做时,它总是重定向到“/account/Login”,即使用户已通过身份验证。我已尝试在startup.cs的ConfigureServices中进行设置

 services.Configure<CookieAuthenticationOptions>(o =>
            {
                o.AuthenticationScheme = "Cookie";
                o.LoginPath = "";
                o.AccessDeniedPath = new Microsoft.AspNet.Http.PathString("/Home/Unauthorized/");
                o.AutomaticAuthenticate = true;
            });

后者不会生成错误,但会导致相同的行为,即所有请求都被重定向到/account/login,即使它们已被授权。感谢所有的帮助。谢谢。

您遇到的问题是您混合了cookie身份验证和Windows身份验证。你不需要两者兼而有之

删除cookie身份验证片段,然后从策略中删除
ActiveAuthenticationScheme=“cookie”
。您创建的策略需要cookie,但由于Windows身份验证不使用cookie,您将始终收到未经授权的响应


不过,有几件事需要注意。Windows身份验证仅支持基于角色的身份验证,在RC1中已被破坏。修复程序将在RC2中。

是否有办法混合使用windows和cookie auth,以便在windows身份验证失败时,您可以允许用户登录并使用cookie进行身份验证?
app.UseCookieAuthentication(options =>
{
options.AuthenticationScheme = "Manpower";
options.LoginPath = "";
options.AccessDeniedPath = new Microsoft.AspNet.Http.PathString("/Home/Unauthorized/");
options.AutomaticAuthenticate = true;
});