аутентификация и RouteConfig - PullRequest
0 голосов
/ 23 апреля 2019

при первой загрузке мое приложение должно показывать мне «localhost / home / index», но всегда перенаправлять меня на «localhost / Account / login? ReturnUrl =% 2f»

это конфигурация, которая у меня есть

RouteConfig

  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 Ответ

0 голосов
/ 23 апреля 2019

Это пример того, как я использую 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, и фильтр будет влиять на все приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...