Это сложно дать точный ответ без получения более подробной информации о вашем конце, но я уже достиг этого условно регистрации:
- внешнего промежуточного слоя аутентификации
- глобальная политика, которая требует аутентификацией запроса
это выглядело что-то вроде:
public class Startup
{
public Startup(IHostingEnvironment env)
{
Environment = env;
}
public IHostingEnvironment Environment { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(x =>
{
if (!Environment.IsDevelopment())
{
var authenticatedUserPolicy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
x.Filters.Add(new AuthorizeFilter(authenticatedUserPolicy));
}
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseStaticFiles();
if (!Environment.IsDevelopment())
{
// Register external authentication middleware
}
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
}
В моем случае фильтр авторизации был применен глобально, поэтому для каждого действия приложения MVC требуется аутентифицированный пользователь.
Если у вас есть разные требования - мелкие градации [Authorize]
атрибутов на некоторые действия - тогда вы, вероятно, можете достичь того же результата, изменив способ создания связанных политик авторизации. Они вообще не могут содержать никаких требований.
AuthorizationPolicy yourCustomPolicy = null;
if (Environment.IsDevelopment())
{
yourCustomPolicy = new AuthorizationPolicyBuilder().Build();
}
else
{
yourCustomPolicy = new AuthorizationPolicyBuilder()
// chaining appropriate methods to suit your needs
.Build();
}
Это выглядит именно то, что я искал. Я проверю его – fra
Это решение может работать с ASP.NET Core 1.x, но в ASP.NET Core 2.0 они меняют конвейер аутентификации. Что работает для меня в версии 2.0, так это https://stackoverflow.com/a/40156927/1118893 – Shabbir
Не могли бы вы сообщить мне, что, по вашему мнению, не работает? Я использую эту технику в ASP.NET Core 2.0 с успехом. –