1.在应用程序根目录的web.config中,统一配置用户验证,权限设置,Membership设置以及roleManage设置
<!--注意,应该放置在system.web标签之前-->
<!--配置角色用户管理数据库连接-->
<connectionStrings>
<remove name="LocalSqlServer"/>
<add name="LocalSqlServer" connectionString="server=.;uid=cctv;pwd=123456;database=mvc_test" />
</connectionStrings>
<system.web>
<!--注意,应该放置在system.web标签内-->
<!--配置Membership-->
<membership defaultProvider="AspNetMembershipProvider" userIsOnlineTimeWindow="20">
<providers>
<remove name="AspNetSqlMembershipProvider" />
<add name="AspNetMembershipProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="LocalSqlServer"
enablePasswordRetrieval="true"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
passwordFormat="Clear"
applicationName="/" />
</providers>
</membership>
<!--配置角色管理器-->
<roleManager enabled="true" defaultProvider="AspNetRoleProvider" >
<providers>
<remove name="AspNetSqlRoleProvider" />
<add name="AspNetRoleProvider"
connectionStringName="LocalSqlServer"
type="System.Web.Security.SqlRoleProvider,System.Web, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"
applicationName="/" />
</providers>
</roleManager>
------------------------------
------------------------------
<!--定义登陆页面-->
<authentication mode="Forms">
<forms name="AuthCookie_travel_manage" loginUrl="LoginTravel.aspx"
timeout="120" />
</authentication>
</system.web>
<!--配置角色目录权限-->
<location path="manage">
<system.web>
<authorization>
<deny users="?" />
<deny roles="administrator" />
<allow roles="common_user" />
</authorization>
</system.web>
</location>
2.运用Membership API,用户可在合适的地方创建角色,代码如下
if(!Roles.RoleExists("administrator"))
Roles.CreateRole("administrator");
if (!Roles.RoleExists("common_user"))
Roles.CreateRole("common_user");
当然Membership也提供大量的其他接口,来为我们实现一个完整的用户管理系统提供强有力的支持,在此就不做展开了
3.实现用户登陆
//其他代码忽略,此处是点击登陆按钮后的操作,在这里,我们创建本地cookies凭证,从而成功登陆系统
protected void Button2_Click(object sender, EventArgs e)
{
string username = myname.Text;
string password = mypass.Text;
if (Membership.ValidateUser(username, password))
{
//FormsAuthentication.SetAuthCookie(username,true);
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1, username, DateTime.Now, DateTime.Now.AddMinutes(60), false, "");
string encryptedTicket = FormsAuthentication.Encrypt(authTicket); // 现在对票证进行加密。
HttpCookie authCookie =new HttpCookie(FormsAuthentication.FormsCookieName,encryptedTicket);
Response.Cookies.Add(authCookie);
Response.Redirect("manage/index.aspx");
}
else
{
Response.Write("失败");
}
}
[注]:ASP.NET2.0提供了一套建立在Membership API之上的实现用户管理的控件,包括登陆,注册,密码找回,密码修改等丰富功能,基本能满足大部分的简单的用户管理要求,用户可以在此基础上进行扩展,也可以直接操作Membership API,实现自己的这些模块。