#c# #asp.net-mvc #security #account
#c# #asp.net-mvc #Безопасность #Учетная запись
Вопрос:
при первой загрузке мое приложение должно показывать мне «localhost / home / index», но всегда перенаправлять меня на «localhost / Account / login?returnUrl=/»
это конфигурация, которая у меня есть
Настройка маршрута
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
WebConfig
<authentication mode="Forms">
<forms defaultUrl="~/Home/index" loginUrl="~/Account/login" timeout="60" />
</authentication>
Контроллеры
[AllowAnonymous]
public class HomeController : BaseController
[AllowAnonymous]
public class AccountController : BaseController
Я бы хотел не перенаправлять на «localhost / account / login»
Обновить
первая загрузка всегда вводит условие, и RedirectToLoginPage
метод выполняется
public class BaseController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
var load = (HomeModel)Session["SessionLayout"] == null;
...
if (load)
{
FormsAuthentication.SignOut();
//FormsAuthentication.RedirectToLoginPage();
PageLoad();
}
...
}
}
}
Ответ №1:
Это пример того, как я использую атрибут actionfilterattribute, надеюсь, это поможет.
Код для атрибута actionfilterattribute;
namespace CP.Controladores
{
public class ValidateCaptchaAttribute : ActionFilterAttribute{
public override void OnActionExecuting(ActionExecutingContext
filterContext)
{
filterContext.ActionParameters["CaptchaIsValid"] = recaptchaResponse.IsValid;
base.OnActionExecuting(filterContext);
}
}
код для контроллера.
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
[CP.Controladores.ValidateCaptcha()]
public ActionResult MailDeContacto(FormCollection values, bool
CaptchaIsValid)
{
// Do something
}
помечая метод, этот фильтр имеет отношение только к действию «MailDeContacto», в противном случае вы можете настроить в globalfilters, и фильтр будет влиять на все приложения.
Комментарии:
1. Да, у него есть тег
[AllowAnonymous] public class BaseController : Controller
2. в моем web.config я использую <режим аутентификации =»Forms»> <forms loginUrl=»~ / Account /Login» timeout = «2880» /> </authentication> пожалуйста, удалите defaultUrl =»~ / Home / index» и дайте мне знать, пожалуйста.
3. результат все тот же
4. встречается редко. Попробуйте удалить basecontroller, и пусть homecontroller просто наследует класс контроллера. У меня он равен вам, и он отлично работает (без basecontroller), возможно, ошибка есть!
5. Я был прав, удалите BaseController из HomeController, и он отлично работает. [Разрешить анонимность] открытый класс HomeController : контроллер.