I'm glad you've included GenericPrincipal for the common username/password authentication scheme. However, there is one big issue. When I want to inherit Person/Customer/etc. from GenericPrincipal, the Name property should not be used as the username - it should instead be the full name for the Person/Customer. I'd instead like to specify a different property to be used as the authenticating username. Also, this is important for cases where I want to use the email as the authenticating username. For example:
Moreover, there are many cases where I don't want all Persons/Customers to have login access. Therefore, it should be possible to leave Email nullable. So, there should NOT be a UNIQUE index applied to Email, because multiple Customers could have null emails (I may not know many of their emails)... unless we apply a FILTERED unique index for non-null values. This is very important for my project. How long would it take to implement this? |
Ara, Bearing in mind that architecture of security-related stuff could differ from project to project quite significantly, we intentionally developed this part as a separate module (Xtensive.Practices.Security) and included it with full sources. Therefore, you can always adjust the security layer for the particular architecture. |