Нельзя использовать атрибут 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
вместе, по существу, подразумевается «видеть, если пользователь вошел в систему, но не требует его доступа к этому представлению». Это позволяет анонимным пользователям доходить до страницы, но позволяет вам доставлять уникальный или другой контент фактическому зарегистрированному пользователю.
спасибо, но почему использование Authorize затем переопределяет его с помощью Allowanonymous, я имею в виду, почему мы не опускаем два атрибута. –
Если вы не используете 'Authorize', то Пользователь не будет заполнен в контексте с помощью журнала в пользователе (если таковой существует). –
Я не понял, вы можете объяснить еще раз, пожалуйста, –