I have a custom object which contains data for a particular profile pertaining to their assignments. Profile members have read access to the object, but I would like them to only be able to see their own data. The object is created daily by an apex script. I have full control on the creation of the object. I also have a formula field which results to true if the logged in user matches the user in the row. I use this to filter the list view to only show the appropriate rows. However, if one user gets the link for another user's row, they will be able to see it. Is there an easy way to filter the rows a user is allowed to see on an object he has access to?
To achieve this, set the Organization Wide Defaults (Setup->Sharing Setting) for your custom object to private and make sure that the user is the Owner of the record. Also ensure that the profile does not have Read All or Modify All permissions for your custom object (Setup ->Profiles->Object Settings).