Вы можете изменить приведенный ниже код, чтобы реализовать структуру, описанную в вашем вопросе.
public class MyCustomAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
if (context.HttpContext.Session != null)
{
var request = context.HttpContext.Session["User"] as User;
if (request != null)
{
if (request.UserGroups.Contains("some_group"))
{
//do something
}
if (request.UserGroups.Contains(""))
{
// do something else
}
}
else
{
//No group info, kinda BadRequest!
filterContext.Result = new RedirectResult("/index.html");
}
}
}
Идея состоит в том, что вы можете отклонять любые запросы от нежелательной группы людей, перенаправляя их на какую-либо страницу.или возвращение неверного запроса типа сообщения.Кроме того, вы можете попытаться изменить класс пользователя, как показано ниже, чтобы легко получить информацию о группе (просто предложение).Надеюсь, это вам поможет.
public class User
{
//....
//....
//User Attributes
public List<string> UserGroups { get; set; }
}
Наконец, вы можете применить этот атрибут следующим образом.
[MyCustom]
public IActionResult YourControllerMethod()
{
return View();
}
Редактировать: Чтобы получить объект из HttpClient, вы можете проверить это в случае получения нулевого сеанса HttpContext.