The default state of authority in networked games using Mirror is that the Server has authority over all game objects which do not represent players. This means, for example, the server would manage control of all collectible items, moving platforms, NPCs, and any other parts of your game that players can interact with, and player game objects have authority on their owner’s client (meaning the client manages their behavior).
[![Client and server authority video tutorial](../images/video_tutorial.png)](https://www.youtube.com/watch?v=WBFrA0Gnpi8&list=PLkx8oFug638oBYF5EOwsSS-gOVBXj1dkP&index=4)
In practical terms, having client authority means that the client can call [Command](Communications/RemoteActions.md) methods, and if the client disconnects, the object is automatically destroyed.
Use the `NetworkIdentity.hasAuthority` property in the client to find out whether a game object has local authority (also accessible on `NetworkBehaviour` for convenience).
Assigning authority to a client causes Mirror to call `OnStartAuthority()` on each `NetworkBehaviour` on the game object on the authority client, and sets the `hasAuthority` property to true. On other clients, the `hasAuthority` property remains false.
**Client Authority is not to be confused with client authoritative architecture** Any action must still go to the server via a [Command](Communications/RemoteActions.md). The client cannot modify SyncVars or affect other clients directly.
1. Spawn the game object using `NetworkServer.Spawn` and pass the network connection of the client to take ownership.
2. Use `NetworkIdentity.AssignClientAuthority` with the network connection of the client to take ownership.
Additionally, there is an optional parameter for [Command] that bypasses the authority check: `[Command(ignoreAuthority = true)]` which allows them to be invoked without the client having authority of the object.
The example below spawns a game object and assigns authority to the client of the player that spawned it, and also shows how to assign authority on request.
To see these properties, select the game object you want to inspect, and in the Inspector window, view the preview window for the NetworkBehaviour scripting components. You can use the value of these properties to execute code based on the context in which the script is running.