Hi Shawn,
I’ve seen this before in this post
We had the same issue and in our case it was a matter of dynamic ip addresses in the clients network. Every 10 minutes they switched.
After some digging around we ended up in the function fetch_session_data. Regardless of your settings to require an ip address or not, it will try to match it with the one stored in the database. Of course, when the ip switches, you get thrown out of the CP.
On line 700 of system/expressionengine/libraries/Session.php you will find the check for ip in the fetch session data function. In the end we ended up commenting that one and that solved our issue. It’s probably an edge case, but it’s worth a try.
public function fetch_session_data()
{
// Look for session. Match the user's IP address and browser for added security.
$this->EE->db->select('member_id, admin_sess, last_activity')
->where('session_id', (string) $this->sdata['session_id'])
->where('ip_address', $this->sdata['ip_address'])
->where('user_agent', $this->sdata['user_agent']);
If you try this fix, does that work for you? Since this is for an older version of EE be sure to make a backup copy of that file before making any changes.
Keep me posted on how this works for you.
Sean