Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Jeff Prosise
Cofounder
Wintellect
www.wintellect.com
Agenda
Membership Service
Login Controls
Role Management Service
Profile Service
Membership Service
Membership API
Membership MembershipUser
Membership Providers
Other Membership
SqlMembershipProvider
Providers
Membership
Data
SQL Server Other
SQL Server
Express Data Stores
The Membership Class
Name Description
try {
Membership.CreateUser ("Jeff", "imbatman!",
"jeff@microsoft.com");
}
catch (MembershipCreateUserException e) {
// Find out why CreateUser failed
switch (e.StatusCode) {
case MembershipCreateStatus.DuplicateUsername:
...
case MembershipCreateStatus.DuplicateEmail:
...
case MembershipCreateStatus.InvalidPassword:
...
default:
...
}
}
Validating Logins
Name Description
LastPassword-
Date user's password was last changed
ChangedDate
Name Description
if (user != null) {
if (user.IsLockedOut) {
user.UnlockUser ();
}
}
Aspnet_regsql.exe
<membership defaultProvider="AspNetSqlMembershipProvider"
userIsOnlineTimeWindow = "00:15:00"
hashAlgorithmType = "[SHA1|MD5]"
>
<providers>
...
</providers>
</membership>
Membership Providers
Membership is provider-based
Provider provides interface between
Membership service and data store
Ships with one membership provider
SqlMembershipProvider (SQL Server and
SQL Server Express)
Use custom providers for other
Membership data stores
Configuring SqlMembershipProvider
<membership defaultProvider="AspNetSqlMembershipProvider">
<providers>
<add name="AspNetSqlMembershipProvider"
connectionStringName="LocalSqlServer"
enablePasswordRetrieval="[true|false]"
enablePasswordReset="[true|false]"
requiresQuestionAndAnswer="[true|false]"
applicationName="/"
requiresUniqueEmail="[true|false]"
passwordFormat="[Clear|Encrypted|Hashed]"
maxInvalidPasswordAttempts="5"
passwordAttemptWindow="10"
passwordStrengthRegularExpression=""
minRequiredPasswordLength="7"
minRequiredNonalphanumericCharacters="1"
type="System.Web.Security.SqlMembershipProvider,
System.Web, ..."
/>
</providers>
</membership>
Membership
Login Controls
Name Description
<html>
<body>
<form runat="server">
<asp:Login RunAt="server" />
</form>
</body>
</html>
Customizing the Login Control
Name Description
Name Description
Controls Other
Login LoginStatus LoginView
Controls
Roles API
Roles
Role Providers
SqlRoleProvider Other Role Providers
Roles Data
Name Description
if (!Roles.RoleExists ("Developers")) {
Roles.CreateRole ("Developers");
}
Adding a User to a Role
<roleManager enabled="[true|false]"
defaultProvider="AspNetSqlRoleProvider"
createPersistentCookie="[true|false]"
cacheRolesInCookie="[true|false]"
cookieName=".ASPXROLES"
cookieTimeout="00:30:00"
cookiePath="/"
cookieRequireSSL="[true|false]"
cookieSlidingExpiration="[true|true]"
cookieProtection="[None|Validation|Encryption|All]"
domain=""
maxCachedResults="25"
>
<providers>
...
</providers>
</roleManager>
Role Management Providers
Profiles
ProfileBase
ProfileCommon
(Autogenerated ProfileBase-Derivative)
Profile Providers
Other Profile
SqlProfileProvider
Providers
<configuration>
<system.web>
<profile>
<properties>
<add name="ScreenName" />
<add name="Posts" type="System.Int32" defaultValue="0"
/>
<add name="LastPost" type="System.DateTime" />
</properties>
</profile>
</system.web>
</configuration>
Using a Profile
<profile>
<properties>
<add ... />
...
<group name="...">
<add ... />
...
</group>
</properties>
</profile>
Defining a Profile Group
<configuration>
<system.web>
<profile>
<properties>
<add name="ScreenName" />
<group name="Forums">
<add name="Posts" type="System.Int32" defaultValue="0"
/>
<add name="LastPost" type="System.DateTime" />
</group>
</properties>
</profile>
</system.web>
</configuration>
Using a Profile Group
<configuration>
<system.web>
<profile>
<properties>
<add name="Cart" type="ShoppingCart" serializeAs="Binary" />
</properties>
</profile>
</system.web>
</configuration>
Profile.propertyname refers to
current user
Use Profile.GetProfile (username) to
access profiles for other users
// Get a reference to Fred's profile
ProfileCommon profile = Profile.GetProfile ("Fred");
<configuration>
<system.web>
<anonymousIdentification enabled="true" />
<profile>
<properties>
<add name="ScreenName" allowAnonymous="true" />
<add name="Posts" type="System.Int32" defaultValue="0 />
<add name="LastPost" type="System.DateTime" />
</properties>
</profile>
</system.web>
</configuration>
Anonymous Identification
AnonymousIdentification_Cre
Called when anonymous ID is issued
ating
Global.asax
<script language="C#" runat="server">
void Profile_MigrateAnonymous (Object sender,
ProfileMigrateEventArgs e)
{
if (Profile.ScreenName == null)
Profile.ScreenName = Profile.GetProfile
(e.AnonymousId).ScreenName;
}
</script>
Configuring the Profile Service
<profile enabled="[true|false]"
defaultProvider="AspNetSqlProfileProvider"
automaticSaveEnabled="[true|false]"
inherits="" // base class for ProfileCommon
(default=ProfileBase)
>
<providers>
...
</providers>
</profile>
Profile Providers