2013-02-14 1 views
0

Когда дело доходит до отображения мнения относительно аутентификации (просмотр отображается в зависимости от посетителя, если он пользователь или нет). У меня много вариантов. Поэтому мне нужна ваша помощь, чтобы показать мне, как я справляюсь с такой ситуацией:вид на просмотр относительно аутентификации?

  • Использование 2 просмотров (один для пользователей и других для посетителей) или только один вид.
  • с использованием двух действий (один с фильтром авторизации, а другой без) или всего лишь одно действие.

И почему выбор, который вы предлагаете, лучше?

ответ

0

Нельзя использовать атрибут Authorize. Это основная функция является установка User в контексте, а затем по умолчанию, он также проверяет, что они вошли в систему, однако, эта последняя часть может быть преодолено с помощью AllowAnonymous атрибутов, а также:.

[Authorize] 
[AllowAnonymous] 
public ActionResult SomeView() 
{ 
    ... 
} 

Так Теперь ваш взгляд будет иметь User играть, и вы можете динамически представлять разные куски зрения, используя, что на основе статуса идентификации:

@if (User.IsAuthenticated) 
{ 
    <p>Logged in</p> 
} 
else 
{ 
    <p>Anonymous</p> 
} 

EDIT (для осветления)

Атрибут Authorize на самом деле делает для вас две разные вещи. Во-первых, он настраивает все механизмы для распознавания пользователя: читает файл cookie или что-то еще, проверяет статус аутентификации, извлекает информацию пользователя, если он аутентифицирован и т. Д. Во-вторых, он проверяет, что пользователь действительно зарегистрирован. AllowAnonymous пропускает эту вторую часть и позволяет любому пользователю войти в систему или нет, чтобы получить доступ к представлению, но это ключ, вам все равно нужна первая часть, чтобы знать, как у вас есть аутентифицированный пользователь или нет.

Таким образом, при использовании как атрибутов Authorize, так и AllowAnonymous вместе, по существу, подразумевается «видеть, если пользователь вошел в систему, но не требует его доступа к этому представлению». Это позволяет анонимным пользователям доходить до страницы, но позволяет вам доставлять уникальный или другой контент фактическому зарегистрированному пользователю.

+0

спасибо, но почему использование Authorize затем переопределяет его с помощью Allowanonymous, я имею в виду, почему мы не опускаем два атрибута. –

+0

Если вы не используете 'Authorize', то Пользователь не будет заполнен в контексте с помощью журнала в пользователе (если таковой существует). –

+0

Я не понял, вы можете объяснить еще раз, пожалуйста, –

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