asp.net security

Secret目录中的所有.aspx文件(.html除外)都受到保护,保护应用在目录基础上。
所以要想对两个文件应用不同的保护级别,就要将这两个文件放到不同的目录下。每个目录下的web.config文件指定文件被保护的方式。
asp.net通过HttpContext的属性User来获取请求者的信息,HttpContext对象伴随在每个请求当中。可以通过各种ASP.NET类(Page,WebService,HttpApplication)的Context属性在应用程序代码中使用它。
页面(ASPX)通过Page.Context.User/Page.User来访问User属性

User的类型是IPrincipal。IPrincipal是System.Security.Principal命名空间中定义的一个接口。
该接口由WindowsPrincipal和GenericPrincipal类实现。
当用户使用windows验证进行验证时,Page.User指向WindowsPrincipal对象。
当用户使用另一种验证形式(如窗体验证)进行验证时,Page.User指向GenericPrincipal对象。
IPrincipal有一个名字为IsInRole的方法,使用该方法可以测试角色成员关系。
对于使用Windows验证进行验证身份的用户来说,角色对应组。
对于使用窗体验证进行验证身份的用户来说,角色根本不存在----除非通过编程方法对他们进行指派。
后面将提到如何在窗体验证中使用基于角色的安全。 
IPrincipal还有一个名为Identity的属性,它包含了关于某个已验证身份用户的标识的信息。 Identity实际上是对IIdentity接口的引用。IIdentity有以下成员:
AuthenticationType -〉表明使用了哪种形式的验证
IsAuthenticated    -〉表明用户是否已经通过验证
Name               -〉表示某个已通过验证的用户的用户名
在CS代码中确认某个调用者是否已经通过验证,可以这样:
if(User.Identity.IsAuthenticated){...}还可以通过检验Request对象的IsAuthenticated属性来确认某个调用者是否已经通过验证,该属性参考了User.Identity.IsAuthenticated.
如果想知道调用者的名称,可以这样:string name = User.Identity.Name;
对于使用Windows验证的某个用户来说,名称的形式是domainname\username,这里的domainname是该用户注册的域(如果该帐户是个本地帐户而不是域帐户,那么指的就是机器名),username是该用户的用户名。
对于用窗体验证登陆进来某个用户来说,用户名通常指用户输入到登录窗体中的名称,用户名的一个用途是为单个用户定制个性化页面。
后面将显示怎样完成这种定制。

posted on 2007-11-10 13:53  simhare  阅读(224)  评论(0编辑  收藏  举报

导航