В контексте обработчика ASP.Net отсутствует 'default IIdentity
'.
Существует GenericIdentity
, который передается GenericPrincipal
, который является значением по умолчанию User
для обработчика ASP.Net, и его поведение таково, что если он создается с непустым именем пользователя, то он аутентифицируется .
, например
public virtual bool IsAuthenticated
{
get
{
return !this.m_name.Equals("");
}
}
Тем не менее, определение IsAuthenticated совершенно произвольно, и класс, реализующий IIdentity
, полностью отвечает за реализацию этой логики.
Как правило, не существует сценария использования для создания экземпляра неаутентифицированного принципала / удостоверения, поскольку это выполняется автоматически во время выполнения asp.net, таким образом, реализуя ваш пользовательский IIdentity
с «тупым» IsAuthenticated
, который возвращает true
должно быть уместно в большинстве случаев.
Кроме того, хотя полная реализация IPrincipal
и IIdentity
тривиальна, вы также можете просто извлечь из GenericPrincipal
и GenericIdentity
сокращение объема кода, который вам нужно поддерживать.
В контексте FormsAuthentication
у вас будет билет только в том случае, если пользователь аутентифицирован, а User
будет экземпляром RolePrincipal
с идентификатором типа FormsIdentity
и его реализация IsAuthenticated
супер сложный ;-) ...
public bool IsAuthenticated
{
get
{
return true;
}
}
Надеюсь, это поможет прояснить ситуацию.