Asp.net Security:IIdentity.IsAuthenticated默认实现

Pic*_*els 1 asp.net security asp.net-membership

我正在编写自己的自定义Identity类,它实现了IIdentity.我不需要更改默认方法IsAuthenticated但现在我想知道默认的IIdentity如何确定它应该返回true还是false?

我想在我正在使用的FormsAuthenticationTicket中找到答案,但不确定这是否正确.

提前致谢,

Pickels

Sky*_*ers 6

IIdentityASP.Net处理程序的上下文中没有"默认".

有一个GenericIdentity传递给 GenericPrincipal它是User一个ASP.Net处理程序的默认值,它的行为是,如果它使用非空用户名实例化,那么它将被验证.

例如

public virtual bool IsAuthenticated
{
    get
    {
        return !this.m_name.Equals("");
    }
}
Run Code Online (Sandbox Code Playgroud)

也就是说,IsAuthenticated的确定完全是任意的,并且类的实现IIdentity完全负责实现这个逻辑.

通常,没有用于实例化未经身份验证的主体/身份的用例,因为这是由asp.net运行时自动完成的,因此在大多数情况下IIdentity使用"哑" 实现您的自定义IsAuthenticated返回true应该是合适的.

此外,尽管全面实施IPrincipalIIdentity是微不足道的,你也可以简单地从派生GenericPrincipalGenericIdentity减少的代码,你需要保持量.

在上下文中,FormsAuthentication如果用户经过身份验证,并且User将是具有RolePrincipal类型标识的实例,FormsIdentity并且它的实现IsAuthenticated是超级复杂的,则您将只有一张票;-) ...

public bool IsAuthenticated
{
    get
    {
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

希望有助于澄清事情.