This is how we did it :)
- User is logged in using his AD account
- Profile information (first name, last name, country, title, department, etc.) are fetched from external system
- Each user has MyProfile page in epi which contains profile information
- Information between external system and epi are synced once a day (we don't delete existing values in EPi)
- When the user is logged in, we check if he has a profile, if not, we create MyPage automatically with initial data from external system
- When MyPage is modified, we store profile information in custom search index Lucene.NET / Apache Solr
- User profile is never cached / stored in memory, because fetching user information from a search index takes 1-10 ms.
- All user profiles have to be searchable (e.g. give me all sales persons from Norway), and custom search index is better / faster than filtering in memory
That sounds sweet Dejan... Yes, users should be searchable and for that we will probably use Siteseeker (indexing the pages). For fetching the userprofile I however think we will stick with the internal filtering of pages... and as I said we only wanna do this filtering once per session. If you (or someone else) know of a good or "right" way of doing this please share it with me :) It's only necesarry to get the users page ID (and keep it in memory...in like a session variable) since I can find the profilepage with that.
I'm building an intranet in EPiServer 7.5 and I'm of course concerned about keeping it fast. When it comes to userprofiles they will be fetched/synced from an AD and then stored as individual pages in EPiServer (in a structure similar to the AD). Users will be able to change and add some information to their profiles (picture, info etc.). When it comes to "loading" the specific user profile information I wanna do this once (per session). All AD functionality is not yet built but I've created some logic, pagetypes etc. to simulate the userprofile part. For instance I've created a class called UserInfo which contains methods for fetching the userinfo from the userpage. The username is of course a unique name and based on this I'm scanning (filtering) through the userpages and once the userpage is found I can fetch information from it. Since there will be around 5000 userpages I don't wanna do this "scanning" too often... only once per session and then keep the pageid to userprofile in memory (until the next session). I'm not sure how to go about this... or if there maybe is a recommended solution for this kind of job/situation. Thankful for advice!