建议你去了解一下.NET的验证授权机制。
上述帖子均没有说明实际问题。
这还得从验证授权机制说起。可以把网站的访问者分为通过验证操作(也就是输入用户名密码登陆),和对某种资源的请求,请求的时候就发生“授权”操作,这时系统根据用户验证的结果,决定是否允许用户访问。
你上面说描述的匿名,实际也算访问者中的一大类,也就是没有经过验证的,都可以当做匿名用户来看待。
如果你看网站的web.config配置文件,会发现authentication配置节和authorization配置节。前者配置告诉系统你将采取什么样的验证方式,有NONE,Windows,Forms和Passport四种,我们暂且不讨论它。现在着重看authorization配置节,典型的写法如下:
<authorization>
<deny users="?"/>
</authorization>
这里既是告诉系统,这个配置文件所在的目录和它的所有子目录拒绝匿名用户的访问。“?”表示所有匿名用户。除此之外还有*号表示所有用户。关键词有deny和allow。
说道这里,你应该知道一种办法:那就是把执行编辑、插入等操作的aspx页面文件放在一个目录中,对这个目录放置一个带有如上内容的web.config文件。这样如果要访问这个目录中的页面,没有登陆验证的情况下会自己跳转到login.aspx页面(为什么会跳转到这个页面,那是machine.config配置中规定的。你可以在网站根目录的web.config中的authentication配置节中更改这一设置。
这样你的页面不用写一句代码就可以实现拒绝匿名用户访问的效果。
如果你嫌这个不够灵活的话,Page对象中自带一个User对象,User对象的Identity属性的IsAuthenticated属性可以用来检测用户是否通过登陆。Request对象本身的IsAuthenticated也可以拿来检测。这些属性就可以在编程时候使用,更精细化地决定不同用户有什么不同的操作。
如果你还想了解更多关于验证授权的知识,可以看看这片文章:
http://bbs.bc-cn.net/viewthread.php?tid=67635&star=at#
.NET自身提供的这种验证授权机制,实际底层原理还是借助Cookies,只不过它把他们进行了一些封装,专门定制了一些功能,自己不用繁复地写头疼地代码来验证用户,像以前那样容易出错,最恼火的是很容易泄露权限。