2015-03-13 2 views
0

Я не знаю, что я задаю правильный вопрос или нет. Я разрабатываю веб-приложение MVC. В этом случае у меня есть метод Home/Index. Когда я запускаю сайт, он показывает мне http://localhost:25537/ в url, который указывает на метод Home/Index. На странице Index Я показываю баннер и другой контент. Когда я вхожу на мой сайт в то время, я хочу перейти на ту же страницу, то есть http://localhost:25537/, что указывает на Home/Index, но содержимое должно быть изменено.Mvc _layout Request.IsAuthenticated

Это мой routeconfig

routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Account", action = "Index", id = UrlParameter.Optional } 
     ); 

Как я могу реализовать такие view? Как я могу перенаправить на ту же страницу, но контент должен измениться?

Если я использовал Request.IsAuthenticate на странице Index, то он отображается после входа в систему. Но у меня есть одно сомнение. Этот Home/index определяется как [AllowAnonymous], но после входа в систему он должен быть [Authorize].

ответ

0

Не имеет значения, выполнено ли действие вашего контроллера атрибутом [Authorize]. Атрибут проверяет только, разрешено ли просматривать страницу без входа в систему.

Итак, на ваш взгляд, вы можете просто использовать:

@if(Request.IsAuthenticated){ 
    // some Stuff you want to show if the user has logged in 
} 
1

Если бы я использовал Request.IsAuthenticate в индекс страницы, то это показывает, после входа в систему.

Это именно то, как вы это делаете. По вашему мнению, вы можете обернуть контент, прошедший проверку подлинности, в чек для этого. Что-то вроде:

<div> 
    public content 
</div> 
@if (Request.IsAuthenticated) 
{ 
    <div> 
     authenticated-only content 
    </div> 
} 

Это содержимое будет передано клиенту тогда и только тогда, когда пользователь, выполняющий запрос, будет аутентифицирован.

Этот дом/индекс определяется как [AllowAnonymous], но после входа в него должно быть [Authorize].

Нет, этого не должно быть. Действие индекса по-прежнему позволяет анонимный доступ. В представлении, которое он возвращает, есть несколько разделов, которые не отображаются для анонимных пользователей. Но сами эти действия могут быть запрошены этими пользователями.

+0

Благодарим за сообщение. Итак, моя реализация верна? это не имеет значения после входа в систему метода '[Authorize]' или '[AllowAnonymous]' –

+0

На самом деле я не понимаю, каким должно быть название этого вопроса. Вот почему я помещаю 'Mvc _layout Request.IsAuthenticated' –

+0

@AjayPunekar: Это имеет значение в том смысле, что эти атрибуты будут определять, требует ли запрос авторизации или может быть сделано анонимными пользователями. В подавляющем большинстве случаев 'Home/Index' позволяет анонимный доступ. Если вы хотите, чтобы пользователи могли посещать «Home/Index» перед их входом в систему, он должен разрешать анонимный доступ. – David

Смежные вопросы