The House’s 37-21 vote Tuesday sends the bill to the Senate.
The bill would generally allow firearms to be prohibited from public buildings only if there are either armed law enforcement officers or armed security guards with metal detectors or X-ray machines. Signs and storage lockers also would be required.
Supporters say the bill would protect gun owners’ rights and allow them to defend themselves. Critics call the bill an unfunded mandate on local governments.
Gov. Jan Brewer vetoed a version of the bill last year. She said it lacked clarity.