ASP.NET Core 2.1 MVC, можем ли мы установить ограничение для контроллера в appsetting.json?URL глобализации WestWind - PullRequest
0 голосов
/ 02 декабря 2018

В моем приложении есть путь для обработки строковых ресурсов на сайте.Контроллер и действие управляются сторонней библиотекой, поэтому я не могу применить их для авторизации атрибута.

Я использую библиотеку WestWind Globalization, которая делает URL-адрес вроде https://localhost:44328/LocalizationAdmin/index.html.

Могу ли я ограничить любой контроллер в моем appsetting.json, как мы делаем в web.config в старом ASP.NET MVC?

Что-то похожее на приведенное ниже в ASP.NET Core?

<location path="LocalizationAdmin">
  <system.web>
    <authorization>
      <deny users="*">
    </authorization>
  </system.web>
</location>

1 Ответ

0 голосов
/ 03 декабря 2018

Web.config используется IIS.Но ASP.NET Core может быть развернуто без IIS.При работе с Nginx такой способ настройки авторизации в appsettings.json не существует.

Гораздо более простой подход заключается в настройке простого промежуточного программного обеспечения:

app.Use(async(ctx , next)=>{
    // passby all other requests
    if(!ctx.Request.Path.StartsWithSegments("/LocalizationAdmin")){
        await next();      
    }
    else {
        var user = ctx.User;               // now we have the current user
        var resource = new { /* ... */ };  // construct description as you like
        var authZService = ctx.RequestServices.GetRequiredService<IAuthorizationService>();
        var accessible =await  authZService.AuthorizeAsync(user, resource,"MyPolicyName");
        if(accessible.Succeeded){
            await next();          
        }else{
            ctx.Response.StatusCode = 403;
            await ctx.Response.WriteAsync("not allowed");
        }
    }
});
...