转载:http://www.cnblogs.com/mqingqing123/archive/2006/05/09/394721.html
providers模型配置简介(一)
一.ASP.NET2.0可以利用的Providers模型
下面列出了ASP.NET2.0已经提供的Providers模型
成员Provider(Membership Provider):验证您站点的用户
角色Provider(Role Provider):授权您站点的用户
档案Provider(Profile Provider):用于个性化您站点的设置
导航Provider(SiteMap Provider):使用站点地图(web.sitemap)来导航你的站点
会话Provider(Session State Store Provider):利用基础数据库存放Session
二.Membership Provider (主要用于自定义用户验证等)
1. web.config配置中添加:
<authentication mode="Forms">
<forms defaultUrl="Default.aspx" loginUrl="login.aspx" protection="All" timeout="60" name=".clb" ></forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
<membership defaultProvider="MyMembership">
<providers>
<add name="MyMembership" type="Test.code.MyMembership"/>
</providers>
</membership>
<roleManager defaultProvider="MyRoleProvider" enabled="true">
<providers>
<add name="MyRoleProvider" type="Test.code.MyRoleProvider"/>
</providers>
</roleManager>
2.添加 MyMembership类,如下:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace Test.code
{
public class MyMembership:System.Web.Security.MembershipProvider
{
public override bool ValidateUser( string username, string password)
{
// 编写检测用户密码的代码。
}
public override string ApplicationName
{
get
{
throw new Exception( " The method or operation is not implemented. " );
}
set
{
throw new Exception( " The method or operation is not implemented. " );
}
}
public override bool ChangePassword( string username, string oldPassword, string newPassword)
{
throw new Exception( " The method or operation is not implemented. " );
}
public override bool ChangePasswordQuestionAndAnswer( string username, string password, string newPasswordQuestion, string newPasswordAnswer)
{
throw new Exception( " The method or operation is not implemented. " );
}
public override MembershipUser CreateUser( string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
{
throw new Exception( " The method or operation is not implemented. " );
}
public override bool DeleteUser( string username, bool deleteAllRelatedData)
{
throw new Exception( " The method or operation is not implemented. " );
}
public override bool EnablePasswordReset
{
get { throw new Exception( " The method or operation is not implemented. " ); }
}
public override bool EnablePasswordRetrieval
{
get { throw new Exception( " The method or operation is not implemented. " ); }
}
public override MembershipUserCollection FindUsersByEmail( string emailToMatch, int pageIndex, int pageSize, out int totalRecords)
{
throw new Exception( " The method or operation is not implemented. " );
}
public override MembershipUserCollection FindUsersByName( string usernameToMatch, int pageIndex, int pageSize, out int totalRecords)
{
throw new Exception( " The method or operation is not implemented. " );
}
public override MembershipUserCollection GetAllUsers( int pageIndex, int pageSize, out int totalRecords)
{
throw new Exception( " The method or operation is not implemented. " );
}
public override int GetNumberOfUsersOnline()
{
throw new Exception( " The method or operation is not implemented. " );
}
public override string GetPassword( string username, string answer)
{
throw new Exception( " The method or operation is not implemented. " );
}
public override MembershipUser GetUser( string username, bool userIsOnline)
{
throw new Exception( " The method or operation is not implemented. " );
}
public override MembershipUser GetUser( object providerUserKey, bool userIsOnline)
{
throw new Exception( " The method or operation is not implemented. " );
}
public override string GetUserNameByEmail( string email)
{
throw new Exception( " The method or operation is not implemented. " );
}
public override int MaxInvalidPasswordAttempts
{
get { throw new Exception( " The method or operation is not implemented. " ); }
}
public override int MinRequiredNonAlphanumericCharacters
{
get { throw new Exception( " The method or operation is not implemented. " ); }
}
public override int MinRequiredPasswordLength
{
get { throw new Exception( " The method or operation is not implemented. " ); }
}
public override int PasswordAttemptWindow
{
get { throw new Exception( " The method or operation is not implemented. " ); }
}
public override MembershipPasswordFormat PasswordFormat
{
get { throw new Exception( " The method or operation is not implemented. " ); }
}
public override string PasswordStrengthRegularExpression
{
get { throw new Exception( " The method or operation is not implemented. " ); }
}
public override bool RequiresQuestionAndAnswer
{
get { throw new Exception( " The method or operation is not implemented. " ); }
}
public override bool RequiresUniqueEmail
{
get { throw new Exception( " The method or operation is not implemented. " ); }
}
public override string ResetPassword( string username, string answer)
{
throw new Exception( " The method or operation is not implemented. " );
}
public override bool UnlockUser( string userName)
{
throw new Exception( " The method or operation is not implemented. " );
}
public override void UpdateUser(MembershipUser user)
{
throw new Exception( " The method or operation is not implemented. " );
}
}
}
本人比较懒,代码就略掉了,自己写吧。
ValidateUser方法重写后,就可以使用login控件啦,而不需要配置VS默认的数据库.
3。MyRoleProvider类编写。需要继承System.Web.Security.RoleProvider ,重写方法后。
在代码中就可以使用Roles.方法名使用啦。。
例如:Roles.IsUserInRole("admin") 检查当前用户是否属于admin组,
当然前题要在MyRoleProvider 中重写IsUserInRole方法啦。