我的项目在同一解决方案中有一个前端和一个API,因此我正在构建一个自定义身份验证中间件,因为前端控制器使用身份,所以它只对API控制器进行授权。
我在Startup.cs上为Identity设置了AutomaticAuthenticate选项false,如下所示
services.AddIdentity<ApplicationUser, IdentityRole>(config =>
{
config.User.RequireUniqueEmail = true;
config.Password.RequiredLength = 4;
config.Cookies.ApplicationCookie.AuthenticationScheme = "Cookie";
config.Cookies.ApplicationCookie.AutomaticAuthenticate = false;
}).AddEntityFrameworkStores<DbContext>()
.AddDefaultTokenProviders();对于我的自定义中间件,我实现了自定义选项,并且我已经这样做了
app.UseApiAuthorizationMiddleware(new ApiAuthenticationOptions
{
AuthenticationScheme = "Api",
AutomaticAuthenticate = false
});现在,当我尝试使用
[Authorize(AuthenticationSchemes = "Api")]在我的控制器中,Visul Studio告诉我找不到AuthenticationSchemes,而我丢失了,并且被汇编或引用了。快速操作工具告诉我要添加
"System.Net.Primitives": "4.0.11-rc2-24027"但是我最终的版本是4.0.10,它不能编译...我不确定到目前为止我所做的是不是很好,或者这里是否确实存在问题。
我希望这是清楚的。
谢谢
发布于 2016-06-01 06:22:46
为了正确地实现自定义身份验证中间件,我不仅必须实现一个继承自AuthenticationMiddleware的中间件,还必须实现一个从AuthenticationHandler扩展的身份验证处理程序,所有逻辑都在HandleAuthenticateAsync()方法上进行
https://stackoverflow.com/questions/37494684
复制相似问题