2012年9月14日
摘要: 以前开发项目时经常是自己开发一套用户权限管理系统进行验证,比较灵活。最近为了单点登录的问题又把Asp.Net自带的验证方式看了一遍,发现这种方式也比较方便,功能也还可以。在Asp.Net提供了三种常用的验证方式:Windows方式是和IIS结合起来可以实现基本、摘要、集成 Windows等身份验证;Passport方式是使用Windows Live ID的帐户来进行统一验证的;Forms方式是使用常见的表单来实现验证。本文主要就是讨论Forms验证方式普通实现、自定义实现、自定义角色提供程序、如何单点登录(可和MOSS结合)等几个方面。一、普通实现方式这种方式是最简单的,只需要配置一下就可以了 阅读全文
posted @ 2012-09-14 17:53 W晴空 阅读(216) 评论(0) 推荐(0)
摘要: 我的程序开发环境:系统:Win7IIS:IIS7开发工具:VS2008 SP1MVC版本:ASP.NET MVC 2.0 RC在部署MVC应用之前,一定要确保你的程序BIN文件夹下面是否包含 System.Web.Mvc.dll(非常重要),如图:如果没有, 请在你的MVC项目中,打开引用列表,如图:鼠标右键点击System.Web.Mvc,选择“属性”,转到下面窗口:将“复制本地”设为True (默认为False),然后生成一下项目,System.Web.Mvc.dll就会出现在BIN文件夹下了。先讲最容易部署的IIS7环境:我的是Win7系统,在Win7是集成了IIS7版本的,在Win7上 阅读全文
posted @ 2012-09-14 17:47 W晴空 阅读(148) 评论(0) 推荐(0)
摘要: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using System.Security;using System.Security.Principal;namespace _03_CustomAuthentication{ class Program { static void Main(string[] args) { //这里实现自定义验证(GenericPrinc... 阅读全文
posted @ 2012-09-14 12:19 W晴空 阅读(221) 评论(0) 推荐(0)
摘要: 构建基于forms的验证机制过程如下: 1,设置IIS为可匿名访问和asp.net web.config中设置为form验证 2,检索数据存储验证用户,并检索角色(如果不是基于角色可不用) 3,使用FormsAuthenticationTicket创建一个Cookie并回发到客户端,并存储 角色到票中,如: FormsAuthentication.SetAuthCookie(Username,true | false) cookies保存时间: HttpContext.Current.Response.Cookies[FormsAuthentication.FormsCookieNam... 阅读全文
posted @ 2012-09-14 11:21 W晴空 阅读(145) 评论(0) 推荐(0)
  2012年9月13日
摘要: 用户验证是每一个项目必须的一个模块,在ASP.NET中有几种用户验证的方法:Windows验证,Forms验证和Passport验证。当然用户也可以自定义与验证方法,而最常用的莫过于Forms验证,这也是今天所要讨论的验证方式。 Forms验证方式首先要配置的是web.config文件,把authentication节点配置为Forms验证,而它默认的是Windows验证。再修改配置文件时,还要注意大小写,因为XML文件是大小写敏感的,修改后authentication节点如下所示,其中还包含了一些form的配置参数。Code highlighting produced by Actipro 阅读全文
posted @ 2012-09-13 09:54 W晴空 阅读(217) 评论(0) 推荐(0)
  2012年9月12日
摘要: 为什么需要表达式目录树通过前面的介绍,相信大家对于表达式目录树已经有些了解了,还有一个很重要的问题,就是为什么需要表达式目录树?在本文开始时,就说过通过解析表达式目录树,可以实现我们一些特定的功能,就拿LINQ to SQL为例,看下面这幅图:当我们在C#语言中编写一个查询表达式时,它将返回一个IQueryable类型的值,在该类型中包含了两个很重要的属性Expression和Provider,如下面的代码:我们编写的查询表达式,将封装为一种抽象的数据结构,这个数据结构就是表达式目录树,当我们在使用上面返回的值时,编译器将会以该值所期望的方式进行翻译,这种方式就是由Expression和Pro 阅读全文
posted @ 2012-09-12 10:45 W晴空 阅读(230) 评论(0) 推荐(0)
摘要: 访问与修改表达式目录树在本文一开始我就说过, 通过解析表达式目录树,我们可以实现一些特定功能,既然要解析表达式目录树,对于表达式目录树的访问自然是不可避免的。在.NET Framework中,提供了一个抽象的表达式目录树访问类ExpressionVisitor,但它是一个internal的,我们不能直接访问。幸运的是,在MSDN中微软给出了ExpressionVisitor类的实现,我们可以直接拿来使用。该类是一个抽象类,微软旨在让我们在集成ExpressionVisitor的基础上,实现自己的表达式目录树访问类。现在我们来看简单的表达式目录树:static void Main(string[ 阅读全文
posted @ 2012-09-12 10:44 W晴空 阅读(304) 评论(0) 推荐(0)
摘要: 执行表达式目录树前面已经可以构造出一个表达式目录树了,现在看看如何去执行表达式目录树。我们需要调用Compile方法来创建一个可执行委托,并且调用该委托,如下面的代码:static void Main(string[] args){ ParameterExpression paraLeft = Expression.Parameter(typeof(int), "a"); ParameterExpression paraRight = Expression.Parameter(typeof(int), "b"); BinaryExpression bin 阅读全文
posted @ 2012-09-12 10:43 W晴空 阅读(262) 评论(0) 推荐(0)
摘要: 表达式目录树与委托大家可能经常看到如下这样的语言,其中第一句是直接用Lambda表达式来初始化了Func委托,而第二句则使用Lambda表达式来构造了一个表达式目录树,它们之间的区别是什么呢?static void Main(string[] args){ Func<int, int, int> lambda = (a, b) => a + b * 2; Expression<Func<int, int, int>> expression = (a, b) => a + b * 2;} 其实看一下IL就很明显,其中第一句直接将Lambda表达式直 阅读全文
posted @ 2012-09-12 10:42 W晴空 阅读(319) 评论(0) 推荐(0)
摘要: 这里说一句,Expression Tree Visualizer可以从MSDN Code Gallery上的LINQ Sample中得到。现在我们知道了表达式目录树的组成,来看看.NET Framework到底提供了哪些表达式?如下图所示:它们都继承于抽象的基类Expression,而泛型的Expression<TDelegate>则继承于LambdaExpression。在Expression类中提供了大量的工厂方法,这些方法负责创建以上各种表达式对象,如调用Add()方法将创建一个表示不进行溢出检查的算术加法运算的BinaryExpression对象,调用Lambda方法将创建 阅读全文
posted @ 2012-09-12 10:41 W晴空 阅读(240) 评论(0) 推荐(0)