Итак, мои требования к проекту изменились, и теперь я думаю, что мне нужно создать собственный фильтр действий.Авторизация с переменными сеанса в asp net mvc 5
Итак, это мой текущий контроллер Логин:
public class LoginController : Controller
{
// GET: Login
public ActionResult Index()
{
return View();
}
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginViewModel model)
{
string userName = AuthenticateUser(model.UserName, model.Password);
if (!(String.IsNullOrEmpty(userName)))
{
Session["UserName"] = userName;
return View("~/Views/Home/Default.cshtml");
}
else
{
ModelState.AddModelError("", "Invalid Login");
return View("~/Views/Home/Login.cshtml");
}
}
public string AuthenticateUser(string username, string password)
{
if(password.Equals("123")
return "Super"
else
return null;
}
public ActionResult LogOff()
{
Session["UserName"] = null;
//AuthenticationManager.SignOut();
return View("~/Views/Home/Login.cshtml");
}
}
И это мое действие фильтра попытка:
public class AuthorizationFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (HttpContext.Current.Session["UserName"] != null)
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary{{ "controller", "MainPage" },
{ "action", "Default" }
});
}
base.OnActionExecuting(filterContext);
}
}
Я уже добавил его FilterConfig, но когда я войти в него не load Default.cshtml он просто продолжает цикл фильтра действий. В результате действия на него выглядит следующим образом:
// это находится в контроллере MainPage
[AuthorizationFilter]
public ActionResult Default()
{
return View("~/Views/Home/Default.cshtml");
}
Итак, что мне нужно добавить, чтобы дать разрешение на это только идентифицированные пользователи могут просматривать приложения Страниц? Должен ли я использовать переменные сеанса или есть другой/лучший способ сделать это с помощью? Я довольно сильно застрял в AuthenticateUser(), так как сейчас происходит просто сравнение, подобное тому, которое мы имеем сейчас.
Спасибо за ваше время.
Чтобы уточнить, вы добавили свой 'AuthorizationFilter' в FilterConfig? –
@WillSmith да, я добавил его в FilterConfig – jiggergargle
Почему вы не можете использовать встроенный атрибут '[Authorize]' на вашем контроллере? – Luke