How do I spawn an object on the server and bind it on the client?

public GameObject playerObject;
public Player player;

...
void Spawn()
{
    playerObject = (GameObject)Instantiate(playerPrefab
                                          ,playerPrefab.transform.position
                                          ,playerPrefab.transform.rotation);
    player = playerObject.GetComponent<Player>();
    player.playerController = this;
    NetworkServer.Spawn(playerObject);
}
...
public override void OnStartServer()
{
     Spawn();
}

This code spawns the object correctly on the server and on the client. The problem is that player and playerObject are both null on the client.

How do I assign the spawned object to the client?

I also tried to send a ClientRpc with a NetworkInstanceId and then use http://docs.unity3d.com/ScriptReference/Networking.ClientScene.FindLocalObject.html but the problem is that I can only send command messages on objects that have isLocalPlayer=true.

Is there a way to ‘own’ multiple objects?

I just wanted to create a PlayerController class that can posses other GameObjects.

Could it be possible that UNet only supports one GameObject per client with the ability to send commands to the server?

So I was reading though the docs and I found this

So I gave it a try with

using UnityEngine;
using UnityEngine.Networking;
using System.Collections;

public class TestNetworkManager : NetworkManager
{
    public GameObject testPrefab;
    public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId)
    {
        GameObject proxyPlayer = (GameObject)Instantiate(playerPrefab,playerPrefab.transform.position,playerPrefab.transform.rotation);
        GameObject test = Instantiate(testPrefab);
        Debug.Log(playerControllerId);
        NetworkServer.AddPlayerForConnection(conn, proxyPlayer, playerControllerId);
        ClientScene.AddPlayer(conn, (short) (playerControllerId + 1));
        NetworkServer.AddPlayerForConnection(conn, test, (short)(playerControllerId + 1));
    }
}

Which seems to work. Both gameobjects are spawned on the client with isLocalPlayer set to true. I just have to do a bit more work to wire everything correctly on the client and on the server. I will probably do it with

ClientScene.FindLocalObject(netid);

Are there any drawbacks with this approach?