Я мигрирую AuthorizationFilterAttribute
с asp. net web api на asp. net core web api.
Ниже KeywordAuthorizationAttribute
находится в моем asp. net код атрибута ядра.
public class KeywordAuthorizationAttribute : AuthorizeAttribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationFilterContext context)
{
var user = context.HttpContext.User;
if (user.Identity.IsAuthenticated)
{
SQLDataAccess sqlDataAccess = new SQLDataAccess(**passedConnectionStringFrom_appsettings.json**);
var username = context.HttpContext.User.Identity.Name.Substring
(context.HttpContext.User.Identity.Name.LastIndexOf(@"\") + 1);
if (!sqlDataAccess.IsUserAllowed((string)context.RouteData.Values["Controller"], username))
{
context.Result = new StatusCodeResult((int)System.Net.HttpStatusCode.Forbidden);
return;
}
}
else
{
context.Result = new StatusCodeResult((int)System.Net.HttpStatusCode.Unauthorized);
return;
}
}
}
Пример KeywordAuthorizationAttribute
- Если действие контроллера или контроллера оформлено этим атрибутом AuthorizeAttribute, он получит имя пользователя и проверит доступ этого контроллера из базы данных.
[Authorize]
[HttpGet]
[KeywordAuthorization]
public IActionResult Get()
{
return Ok();
}
Мой вопрос: как я могу передать строку подключения в KeywordAuthorizationAttribute
? Я уже установил строку подключения в appsettings. json
{
"ConnectionStrings": {
"EmployeeDBConnection": "server=(localdb)\\MSSQLLocalDB;database=EmployeeDB;Trusted_Connection=true"
}
}