async def login(self, user=DEFAULT_USER, password=DEFAULT_PASSWORD,<EOL>account=DEFAULT_ACCOUNT):
code, info = await self.command("<STR_LIT>" + user, ("<STR_LIT>", "<STR_LIT>"))<EOL>while code.matches("<STR_LIT>"):<EOL><INDENT>if code == "<STR_LIT>":<EOL><INDENT>cmd = "<STR_LIT>" + password<EOL><DEDENT>elif code == "<STR_LIT>":<EOL><INDENT>cmd = "<STR_LIT>" + account<EOL><DEDENT>else:<EOL><INDENT>raise errors.StatusCodeError("<STR_LIT>", code, info)<EOL><DEDENT>code, info = await self.command(cmd, ("<STR_LIT>", "<STR_LIT>"))<EOL><DEDENT>
:py:func:`asyncio.coroutine`

Server authentication.

:param user: username
:type user: :py:class:`str`

:param password: password
:type password: :py:class:`str`

:param account: account (almost always blank)
:type account: :py:class:`str`

:raises aioftp.StatusCodeError: if unknown code received