This code successfully spawns a object when a new player connects but hasAuthority is false the same as if it was create using the normal network spawn.
public override void OnServerConnect(NetworkConnection conn)
{
base.OnServerConnect(conn);
//playerBehaviour
var p = GameObject.Instantiate(playerBehaviour);
NetworkServer.SpawnWithClientAuthority(p.gameObject, conn);
}