Итак, я хочу проверить, существует ли сеанс, прежде чем запускать какое-либо действие в контроллере. Я нашел эти решения link1 , link2 и попытался реализовать их. Это мой класс SessionAuthorize
, здесь все вроде нормально:
public class SessionAuthorize : ActionFilterAttribute
{
private readonly SessionManager _sessionManager;
public SessionAuthorize(SessionManager sessionManager)
{
_sessionManager = sessionManager;
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!_sessionManager.IsLoggedIn)
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary {
{ "Controller", "Home" },
{ "Action", "Login" }
});
}
}
}
Теперь проблема возникает, когда я пытаюсь вызвать его в контроллере. Поэтому я должен позвонить, добавив атрибут [SessionAuthorize]
следующим образом:
[SessionAuthorize]
public class AccountController : Controller
{
//code
}
Но это дает мне ошибку, которую я не вызываю должным образом. Я считаю, что это связано с инъекцией зависимостей, которую я использовал в SessionAuthorize
для доступа к сеансу. Но я не уверен, как это вызвать сейчас.
Сообщение об ошибке:
'Не указан аргумент, который соответствует требуемому формальному параметру' sessionManager 'из' SessionAuthorize .SessionAuthorize (SessionManager) '
Итак, я хотел бы знать, как я должен использовать его в своем контроллере