Я не уверен, что вторая часть вашего вопроса действительно должна означать, однако, основная часть вашего вопроса должна быть довольно простой. Это не имеет никакого отношения к «маршрутизации», просто то, что вы хотите, если кто-то приходит на вашу индексную (корневую) страницу вашего сайта.
Допустим, это ваш контроллер/действие
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult AuthenticatedIndex()
{
ViewBag.Message = "Your application description page.";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
}
Чтобы проверить, если кто-то проходит проверку подлинности в контроллер/действие, вы можете использовать эту строку кода:
User.Identity.IsAuthenticated
, который возвращает истину/false в зависимости от того, аутентифицирован ли пользователь. Затем нам нужно отправить пользователя в другое место, если они аутентифицированы. Это делается с помощью следующих действий:
RedirectToAction("actionName", "controllerName");
Таким образом, если мы привязываем все это вместе, мы можем обновить наш Index()
метод и отправить пользователю в другом месте, если они идентифицируются.
public ActionResult Index()
{
if(User.Identity.IsAuthenticated){
//send them to the AuthenticatedIndex page instead of the index page
return RedirectToAction("AuthenticatedIndex", "Home");
}
return View();
}
Единственный нюанс я вижу здесь является то, что зарегистрированный пользователь будет Никогда быть в состоянии добраться до индексного метода, который может быть то, что вы хотите.
Спасибо Tommy за ваше предложение! Я хочу, чтобы страница «Индекс» была доступна для аутентифицированных пользователей. Но после вашей идеи я переименую страницу индекса на что-то еще, а затем пусть метод Index имеет два переадресации в зависимости от проверки IsAuthenticated. Таким образом, определенные URL-адреса всегда будут работать, и по умолчанию будет перенаправлен так, как я хочу. Внешняя идея всегда полезна для вас. :) –