登录窗口已经完成了,现在可以完成最后的工作了,主要就是完成Membership提供者的配置。
首先打开Web.Config文件,在configuration段内添加一个数据库连接定义,代码如下:
<connectionStrings>
<addname="ApplicationServices"connectionString="Data Source=192.168.0.254;InitialCatalog=SimpleCMS;Persist Security Info=True;User ID=sa;password=abcd-1234;"providerName="System.Data.SqlClient" />
</connectionStrings>
代码中的数据库地址、用户名和密码请根据自己实际情况填写。
然后在system.web段内添加Membership提供者的定义,代码如下:
<membership>
<providers>
<clear />
<add name="AspNetSqlMembershipProvider"type="System.Web.Security.SqlMembershipProvider"connectionStringName="ApplicationServices"enablePasswordRetrieval="false" enablePasswordReset="true"requiresQuestionAndAnswer="false"requiresUniqueEmail="true" maxInvalidPasswordAttempts="5"minRequiredPasswordLength="6"minRequiredNonalphanumericCharacters="0"passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>
<roleManager enabled="true">
<providers>
<clear />
<add name="AspNetSqlRoleProvider"type="System.Web.Security.SqlRoleProvider"connectionStringName="ApplicationServices"applicationName="/" />
<add name="AspNetWindowsTokenRoleProvider"type="System.Web.Security.WindowsTokenRoleProvider"applicationName="/" />
</providers>
</roleManager>
代码中,membership段是用来定义Membership提供者的,定义的内容包括,类型(type)为SQLMembershipProvider,表示使用的是SQL Server提供者;数据库的连接字符串(connectionStringName)为刚才定义的连接字符串;密码恢复(enablePasswordRetrieval)为fallse;重置密码(enablePasswordReset)为true;要求密码问题(requiresQuestionAndAnswer)为false;要求唯一电子邮件(requiresUniqueEmail)为true;最大的密码错误尝试次数(maxInvalidPasswordAttempts)为5次;密码最小长度(minRequiredPasswordLength)为6;密码最小的非字符个数(minRequiredNonalphanumericCharacters)为0;有效密码或密码答案的连续失败尝试次数进行跟踪的时间间隔(passwordAttemptWindow)为10分钟。最后的applicationName,表示当前应用程序的标识,因为没有多个应用程序使用该数据库提供者,因而设置为“/”。
而roleManager段定义的角色提供者,主要定义就是连接字符串和应用程序的标识。
完成后,在主菜单中选择项目,ASP.NET配置,会在浏览器中打开如图13所示网站管理工具。如果刚才的配置正确,现在就可以添加用户和角色了。
图13 网站管理工具
单击页面中的安全标签页,将看到如图14的页面。
图14 安全标签页
单击角色中的“创建或管理角色”,在如图15所示的页面中,先创建系统管理员和普通用户两种角色。
图15 创建角色
返回安全标签页,单击用户中的“创建用户”创建admin和test两个用户。两个用户的密码都设置为123456,电子邮件随便填吧。还要将admin的角色设置为系统管理员,test的角色设置为普通用户。
好了,用户和角色都有了,可以完成最终的验证代码了。回到VS,切换到AccountController.cs文件,先加入对System.Web.Security的引用,然后修改验证用户和密码的判断语句,并加上写入认证Cookies的代码,最终代码如下:
if(Membership.ValidateUser(model.UserName,model.Password))
{
FormsAuthentication.SetAuthCookie(model.UserName, true);
success = true;
}
else
{
errors.Add("UserName", "错误的用户名或密码。");
errors.Add("Password", "错误的用户名或密码。");
}
好了,简单验证过程就完成了,不过,貌似太简单了点,呵呵。下面搞得复杂点。先把这段语句屏蔽掉,调用Membership的GetUser方法根据用户名返回类型为MembershipUser用户对象,代码如下:
MembershipUser user = Membership.GetUser(model.UserName);
接着判断user是否为null,如果为null,表示用户不存在,返回用户名和密码错误信息,代码如下:
if (user != null)
{
}
else
{
errors.Add("UserName", "错误的用户名或密码。");
errors.Add("Password", "错误的用户名或密码。");
}
如果用户不为null,表示用户存在。接着检查用户IsApproved属性,看用户是否被禁用了,如果是,返回用户被禁用信息,代码如下:
if (user.IsApproved)
{
}
else
{
errors.Add("UserName", "用户已被禁用,请与管理员联系。");
}
接着检查IsLockedOut属性,判断用户是否已被锁定,如果锁定,返回用户被锁定信息,还需要多少分钟解锁,代码如下:
TimeSpan ts = user.LastLockoutDate.AddMinutes(60) -DateTime.Now;
if (user.IsLockedOut && ts.Minutes > 0)
{
errors.Add("UserName", "用户名已被锁定," + ts.Minutes + "分钟后才能再次尝试登录。");
}
else
{
if (user.IsLockedOut)user.UnlockUser();
}
代码中的LastLockoutDate属性会返回用户被锁定的时间,通过AddMinutes方法,加上锁定时间间隔,当前是60分钟,就可计算出解锁时间,将解锁时间减去当前时间,就可根据它们的差值ts判断是否已经过了解锁时间了。如果ts大于0,表示还没达到解锁时间,否则就意味着已经解锁,可以继续验证了,因而,要调用UnlockUser方法来解锁用户。
接着就可调用ValidateUser方法验证用户名和密码了,也就是把刚才屏蔽掉的那段代码复制到这里。
在验证成功后,还要验证用户的角色是否符合登录后台的要求,目前只运行系统管理员和普通用户登录,因而验证成功后的代码要修改成这样:
if (Roles.IsUserInRole(model.UserName, "系统管理员 ") |Roles.IsUserInRole(model.UserName, "普通用户"))
{
FormsAuthentication.SetAuthCookie(model.UserName, false);
success =true;
}
else
{
errors.Add("UserName", "您没有权限登录系统。");
}
至此,整个登录过程就完成了。
分享到:
相关推荐
一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建Viewport(2)源代码
一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建Viewport(1)
在本文中,我们将深入探讨如何使用Ext JS MVC框架与Asp.Net MVC 3技术来创建一个简单的CMS(内容管理系统)后台管理系统。首先,让我们逐一了解这两个核心技术及其在项目中的作用。 1. **Ext JS MVC**: - **MVC...
在本项目中,我们将深入探讨如何利用Ext JS MVC框架与Asp.Net MVC 3构建一个基本的CMS(内容管理系统)的后台用户管理模块。这个教程的第二部分将着重于源代码实现,帮助开发者理解这两个技术如何协同工作以实现功能...
在本文中,我们将深入探讨如何使用Ext JS MVC框架与Asp.Net MVC 3技术来构建一个简单的CMS(内容管理系统)的后台。这两种技术都是Web开发中的强大工具,结合使用可以创建功能丰富的交互式用户界面。我们将主要关注...
在本教程中,我们将深入探讨如何利用Ext JS的MVC架构和Asp.Net MVC 3框架,共同构建一个简易的CMS(内容管理系统)的后台用户管理模块。这是一系列教程的第四部分,主要关注源代码的实现。 首先,我们要了解Ext JS...
在本教程中,我们将深入探讨如何使用Ext JS MVC框架与Asp.Net MVC 3来构建一个简单的CMS(内容管理系统)的后台。这个系统的基石是数据库,由两个文件组成:SimpleCMS_log.ldf和SimpleCMS.mdf。这两个文件是SQL ...
在本教程中,我们将深入探讨如何利用Ext JS MVC框架与Asp.Net MVC 3构建一个基本的CMS(内容管理系统)的后台部分,重点是调整首页的显示。这涉及到前端和后端的协同工作,以及对MVC设计模式的理解和应用。 首先,...
在本项目中,我们将深入探讨如何使用Ext JS MVC框架与Asp.Net MVC 3结合,构建一个简单的CMS(内容管理系统)后台,特别是关注用户管理功能。这个教程将分为多个步骤,帮助开发者逐步理解这两个强大的技术如何协同...
与传统的ASP.NET相比,Ext.Net提供了更丰富的用户界面元素和更强大的数据绑定功能。 MVC(Model-View-Controller)是一种设计模式,广泛应用于Web应用开发,特别是在.NET Framework中。它将应用程序分为三个主要...
这个框架结合了Ext.Net的强大的JavaScript组件库与ASP.NET MVC的模式和控制器架构,以及Entity Framework 5的数据持久化能力。 **Ext.Net** 是一个用于开发Web应用程序的JavaScript库,它提供了大量的UI控件,如...
【标题】:“ext asp.net mvc nhibernate 完整项目示例”是一个综合性的Web应用程序开发项目,它整合了多个关键的技术组件,包括EXT.NET、ASP.NET MVC框架和NHibernate持久化层。EXT.NET是用于创建交互式用户界面的...
这表明我们要讨论的是一个用于构建Web应用程序的UI库,它与Microsoft的ASP.NET MVC框架相结合,提供了一种使用JavaScript和.NET后端技术创建富交互式用户界面的方法。 描述中的"framework ext.net 2.4 for mvc...
在这个例子中,EXT JS 被用来构建用户界面,实现与ASP.NET MVC后端的交互,如展示学生信息、执行增删改操作。 【SQL Server】 SQL Server是微软开发的关系型数据库管理系统,广泛应用于企业级数据存储和管理。在本...
总之,"ASP.NET与EXT实现动感后台管理界面"是一个综合性的课题,涵盖了后端服务的开发、前端界面的设计以及两者间的通信。掌握这些技术,可以帮助开发者创建出高效、美观且易用的后台管理系统,提升工作效率,同时也...
总之,Ext.NET.MVC.Pro.2.2.0.MVC.Examples.Explorer.zip是一个宝贵的资源,它不仅提供了丰富的示例来展示Ext.NET MVC的强大功能,还帮助开发者深入理解如何在ASP.NET MVC环境中高效地使用这个框架。无论是初学者...
ExtJS + ASP.NET 后台管理系统页面是一种常见的企业级应用架构,它结合了JavaScript库ExtJS的前端交互性与微软的ASP.NET后端技术,构建出功能强大的管理界面。下面将详细阐述这两种技术以及它们在后台管理系统中的...
这个框架是专门为基于Microsoft ASP.NET MVC技术的Web应用程序设计的,它扩展了.NET开发人员的能力,使他们能够构建功能丰富、交互性强的Web用户界面。在深入探讨其核心知识点之前,我们先了解一下什么是Ext.NET和...
Ext.Direct.Mvc是专门为ASP.NET MVC框架设计的一个扩展库,它实现了Sencha的Ext Direct技术,使得客户端的Ext JS与服务器端的ASP.NET MVC之间能够进行高效、便捷的数据交互。Ext Direct提供了一种标准化的方式来定义...
无论是在ASP.NET Web Forms还是ASP.NET MVC框架下,EXT.NET都能提供一致的编程模型,这大大简化了开发过程,并有助于保持代码的整洁和一致性。 此外,EXT.NET还支持利用.NET控件和EXTJS组件的混合使用,这对于那些...