Preserving existing logins during database refresh
Not sure how you're doing your DB refresh. A DB restore of a user database doesn't change the logins; that should only be an issue if you are replacing the master DB, which I wouldn't generally recommend.

However, if the SID of a login in prod doesn't match the SID of that same login in the source environment, then the users may not match up correctly; that's when you'd have to deal with "orphaned" users in your databases.

As you note, scripting out the users in one environment, and loading them to another, should ensure that the SIDs in both environments line up correctly. That said, unless you're doing this when first setting up a server, I wouldn't try this.

Microsoft has an article that helps you troubleshoot orphaned users for SQL Server 2014.

To find orphaned users, run the following:

USE &lt;database_name&gt;;  
GO
sp_change_users_login @Action='Report';  
GO


This will identify users tied to a login SID that doesn't exist.

You can fix these with the following statement:

USE &lt;database_name&gt;;  
GO  
sp_change_users_login @Action='update_one', @UserNamePattern='&lt;database_user&gt;', @LoginName='&lt;login_name&gt;';  
GO


This updates the login SID for the user, so it matches that of the login you specify.

NOTE: the above works (as best I recall) going back at least as far as SQL Server 2008. However, the process has changed for SQL Server 2016 &amp; 2017. Here's a link to the SQL 2016 version of the page I linked to above.