前言:一般来说,如果会员登陆上后台以后,则用Session来保存用户资料,然后如果用户登陆其他网页的时候,在网页加载的时候通过读取用户浏览器保存的Session,来判断用户是否已经登陆。但是这样的话,网站的每个页面的后台代码中都要首先判断一下用户信息,这样很不方便。
ASP.NET内置票据认证为我们解决了这个麻烦,同过ASP.NET内置票据认证,可以很轻松地管理用户登陆问题。
ASP.NET内置票据认证
根据你的设置,在进入到某一个目录下的页面时自动判断你是否有权限访问这个页面,没有权限则自动跳转到你预先设置的登录页
1、 在根目录建立一个Global.asax文件,添加一段代码
protected void Application_AuthenticateRequest(object SENDER, EventArgs e) { if (HttpContext.Current.User != null) { if (HttpContext.Current.User.Identity.IsAuthenticated) { if (HttpContext.Current.User.Identity is FormsIdentity) { FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity; FormsAuthenticationTicket tiecket = id.Ticket; string userData = tiecket.UserData; string[] roles = userData.Split(','); HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id, roles); } } } }
2、 在web.config 文件中配置目录权限及登录页,
①:在system.web节点中,添加下面代码,配置登录页:
<!--登陆页--> <authentication mode="Forms"> <forms name="mycook" loginUrl="admin/default.aspx" protection="All" path="/"/> </authentication>
②:配置目录权限,在system.web节点外面
下面代码的意思是:admin目录下的所有文件,允许admin这个用户访问,拒绝其他用户访问
<!--配置登陆权限--> <location path="admin"> <system.web> <authorization> <allow roles="admin"/> <deny users="*"/> </authorization> </system.web> </location> <location path="user"> <system.web> <authorization> <allow roles="user"/> <deny users="*"/> </authorization> </system.web> </location> <location path="admin/admin_login.aspx"> <system.web> <authorization> <allow users="*"/> </authorization> </system.web> </location> <location path="user/user_login.aspx"> <system.web> <authorization> <allow users="*"/> </authorization> </system.web> </location>
把上面的代码修改一下,使之符合我们项目要求:
所以,在<system.web>下面添加下面代码:
<!--配置登陆权限--> <location path="admin"> <system.web> <authorization> <allow roles="admin"/> <deny users="*"/> </authorization> </system.web> </location> <location path="admin/admin_login.aspx"> <system.web> <authorization> <allow users="*"/> </authorization> </system.web> </location>
配置好的Web.config文件如下:
<?xml version="1.0"?> <!-- 有关如何配置 ASP.NET 应用程序的详细消息,请访问 http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <configSections> <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true"/> </configSections> <dataConfiguration defaultDatabase="StrConn"/> <connectionStrings> <add name="StrConn" connectionString="data source=.;database=MyShop;uid=sa;pwd=123456" providerName="System.Data.SqlClient"/> </connectionStrings> <system.web> <compilation debug="true" targetFramework="4.0"> <assemblies> <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/></assemblies></compilation> <!--登陆页--> <authentication mode="Forms"> <forms name="mycook" loginUrl="admin/login.aspx" protection="All" path="/"/> </authentication> </system.web> <!--目录权限--> <location path="admin"> <system.web> <authorization> <allow roles="admin"/> <deny users="*"/> </authorization> </system.web> </location> <location path="admin/login.aspx"> <system.web> <authorization> <allow users="*"/> </authorization> </system.web> </location> </configuration> <?xml version="1.0"?> <!-- 有关如何配置 ASP.NET 应用程序的详细消息,请访问 http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <configSections> <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true"/> </configSections> <dataConfiguration defaultDatabase="StrConn"/> <connectionStrings> <add name="StrConn" connectionString="data source=.;database=MyShop;uid=sa;pwd=123456" providerName="System.Data.SqlClient"/> </connectionStrings> <system.web> <compilation debug="true" targetFramework="4.0"> <assemblies> <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/></assemblies></compilation> <!--登陆页--> <authentication mode="Forms"> <forms name="mycook" loginUrl="admin/login.aspx" protection="All" path="/"/> </authentication> </system.web> <!--目录权限--> <location path="admin"> <system.web> <authorization> <allow roles="admin"/> <deny users="*"/> </authorization> </system.web> </location> <location path="admin/login.aspx"> <system.web> <authorization> <allow users="*"/> </authorization> </system.web> </location> </configuration>
3、 在登录页的登录事件中的登录成功后烤入一段代码
HttpCookie cook; string strReturnURL; string roles = "admin";//添加用户角色 FormsAuthenticationTicket ticket = new FormsAuthenticationTicket( 1, name, DateTime.Now, DateTime.Now.AddMinutes(30), false, roles); cook = new HttpCookie("mycook"); cook.Value = FormsAuthentication.Encrypt(ticket); Response.Cookies.Add(cook); strReturnURL = Request.Params["ReturnUrl"]; if (strReturnURL != null) { Response.Redirect(strReturnURL); } else { Response.Redirect("default.aspx"); }
登陆页面login.aspx的cs代码:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.Security; namespace Web.admin { public partial class login : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btnlogin_Click(object sender, EventArgs e) { string name = txtname.Text.Trim(); string pwd = txtpwd.Text.Trim(); if (name.Length==0&&pwd.Length==0) { litmsg.Text = "<span style='Color:red;'>用户资料请填写完整!</span>"; return; } if (name == "admin" && pwd == "123456") { HttpCookie cook; string strReturnURL; string roles = "admin"; FormsAuthenticationTicket ticket = new FormsAuthenticationTicket( 1, name, DateTime.Now, DateTime.Now.AddMinutes(30), false, roles); cook = new HttpCookie("mycook"); cook.Value = FormsAuthentication.Encrypt(ticket); Response.Cookies.Add(cook); strReturnURL = Request.Params["ReturnUrl"]; if (strReturnURL != null) { Response.Redirect(strReturnURL); } else { Response.Redirect("default.aspx"); } } else { litmsg.Text = "<span style='Color:red;'>用户名或者密码错误!</span>"; return; } } } }
相关推荐
ASP.NET鲜花购物网是一个基于ASP.NET技术开发的在线购物平台,专营鲜花销售。这个项目展示了如何在实际的电子商务环境中运用ASP.NET的核心功能,包括页面交互、数据访问、用户管理等多个方面。通过学习和研究这个...
1. **Asp.net架构**:Asp.net采用了页面生命周期模型,使得开发者能够精确控制页面从请求到响应的每个阶段。它包含一系列的事件,如Init、Load、PreRender等,允许在特定时间点进行代码执行。 2. **Web Forms**:...
ASP.NET购物网源代码是一个基于ASP.NET技术构建的电子商务平台的源码实现,它提供了完整的网站功能,包括商品浏览、用户注册与登录、购物车、订单处理等关键模块。这个项目对于学习ASP.NET web开发、了解电子商务...
ASP.NET购物网是一个基于微软的ASP.NET技术构建的在线电子商务平台。ASP.NET是.NET框架的一部分,主要用于开发Web应用程序。这个简单的购物网项目可能是为了教学目的或作为初学者实践Web开发的实例。 首先,我们...
1. ASP.NET框架:ASP.NET是由Microsoft开发的一种Web应用框架,用于构建动态、数据驱动的Web应用程序。它提供了丰富的服务器控件、事件驱动模型以及自动页面状态管理,简化了Web开发过程。 2. C#语言:C#是一种面向...
ASP.NET购物网源码是一个基于微软的ASP.NET技术构建的电子商务平台。这个源码提供了一个完整的网上购物系统的基础,新手开发者可以通过学习和修改它来理解电商网站的工作原理和开发流程。下面将详细介绍ASP.NET和...
【标题】"商城购物网ASP.NET VS2008"所涉及的知识点主要集中在ASP.NET技术框架以及Visual Studio 2008开发环境上。ASP.NET是微软公司推出的Web应用程序开发平台,它基于.NET Framework,提供了丰富的功能和高效的...
【标题】"校内购物网V1.1源码asp.net"是一个基于ASP.NET技术的校园内部购物平台的源代码版本。这个项目旨在为大学校园内的师生提供一个方便、快捷的在线购物环境,促进校园内部商品和服务的交易。 【描述】"校内...
1. **高效性能**:ASP.NET 使用编译后的代码执行,相对于其他解释型语言,它提供了更高的运行速度和性能。 2. **丰富的控件库**:ASP.NET 提供了大量内置服务器控件,如按钮、文本框、表格等,这些控件可以方便地...
5. **数据库交互**:购物网通常与数据库紧密集成,`Manageproduct.aspx`可能用于管理产品库存和详情,使用ADO.NET或Entity Framework进行数据访问。SQL Server、MySQL或其他关系型数据库可能是后端存储。 6. **状态...
3. **多条件查询**:ASP.NET购物网允许用户根据多种条件(如商品名称、价格范围、品牌等)搜索产品。这通常通过SQL查询实现,利用参数化查询避免SQL注入攻击。ASP.NET的GridView或ListView控件可以方便地展示查询...
1. **MVC(Model-View-Controller)架构**:ASP.NET MVC是ASP.NET框架的一个重要组成部分,它是一种设计模式,将业务逻辑、数据和用户界面分离,使得代码更易于管理和测试。在这个源码中,我们可以看到控制器...
【标题】"asp.net加SQL2005的购物网"是一个基于ASP.NET技术与SQL Server 2005数据库构建的在线购物平台。这个项目采用了一种类似于PetShop的框架模式,PetShop是微软发布的一个经典示例,用于演示ASP.NET的核心功能...
一直想写个完整的购物模块,但限于能力到现在也没完。这两天参考别人的自己写了这样一个简单的购物功能, 但还存在两个问题没有解决 : 1、----如何用户下次登录查询上次的购物清单---- 2、----如何将支付嵌入到模块...
1. 用户认证与授权:使用ASP.NET的身份验证和授权机制,保护用户登录信息,控制不同用户访问权限。 2. 数据库设计:包含商品表、用户表、订单表等,遵循数据库设计规范,如范式理论,以保证数据的一致性和完整性。 3...
总结起来,这个“鲜花网上购物网站”利用ASP.NET 的强大功能,结合JavaScript实现动态交互,通过CSS美化界面,并利用`App_Code` 和 `App_Themes` 文件夹组织业务逻辑和界面样式,提供了一个用户友好的在线购物体验。...
1. **ASP.NET框架**:ASP.NET是由微软开发的一种服务器端Web应用程序框架,用于构建动态网站、Web应用和Web服务。在这个项目中,ASP.NET提供了高效的代码编写、调试和部署环境,支持C#或VB.NET等编程语言。 2. **...
毕业设计,基于三层模式Asp.Net+SqlServer开发的土特产销售购物网,内含Asp.Net完整源代码,数据库文件 asp.net三层模式土特产销售购物网毕业源码案例设计 程序开发软件: Visual Studio 2010以上 数据库:sql...
2. **C#语言**:ASP.NET通常与C#语言配合使用,这是一种面向对象的编程语言,具有简洁、类型安全和性能高效的特点。源码中会涉及到C#的类、方法、属性、事件处理等概念。 3. **数据库交互**:电子商务网站离不开...
总结来说,ASP.NET购物系统网站是一个涵盖了多种技术和功能的复杂系统,涉及到前端交互、后端逻辑、数据库管理、安全防护等多个方面。开发者需要具备深厚的ASP.NET知识、数据库管理技能,以及对电商运营流程的理解,...