论坛上找到的,希望对你有帮助 以前寫asp網頁時校驗用戶訪問網頁權限時必須在每個asp網頁第一行寫一個inclue語句,包含文件的功能是校驗用戶訪問網頁權限,而在asp.net中只需在一個配置文件中加上inclue語句,之後所有aspx網頁都會執行inclue語句包括的代碼,我是問這個配置文件名是什麼? 我在Global.asax文件試過,但不起作用. 如果定義類的話,那在每個文件還是要加入一些代碼,而我說的那種方法不用對aspx文件做任何修改就可以執行包含文件中的功能. 我是從去年9月份微軟技術大會里知道asp.net有這個功能,但我那時候還是用其它語言寫數據庫管理程序,所以沒留意,現在要用的時候又記不起來了. do it in global.asax, in HttpApplication's event handlers, or write some HttpModule for authentication purpose, you should be using windows integration or forms-based authentication in ASP.NET, but if you insist, try void Application_AcquireRequestState(Object sender, EventArgs E) { string[] s = HttpContext.Current.Request.Url.Segments; if (s[s.Length-1] != "login.aspx" && (Session["login"] == null || Session["login"] =="")) Response.Redirect("login.aspx"); }
代码:protected void Application_PreRequestHandlerExecute() { User user = (User) Session.StaticObjects["user"]; if (theFile!="login.aspx" && theFile!="logout.aspx") { if (!user.CheckPermission(Request.Path)) Response.Redirect(thePath+"/login.aspx?ErrorMessageKeyword="+user.LastError +"&FromPage="+Request.Path); } }这是最初的版本,实现基本的检查,很简单,但是可用的,它这个函数放在global里,这样你所有的网页都必须经过它了(我把login,logout除外了)。好处是,你不用在任何网页中关心权限问题,这里已经完全解决了。没有session检查,没有include,网页自己甚至不知道检查的过程。注意!下面的思路很重要:所谓权限检查其实就是用户有没有权力浏览某个网页,我们不从网页自己的角度出发,太多了,容易漏,从用户的角度看就是他有没有权力,用户自己最清楚,用户是分组的,他的权力由他所在组的权力决定,这样就简单多了。组一般也就几十个。所以:在global里申明一个session级的用户,用户从浏览第一个网页看十就有了身份(客人)。客人的权力,他自己知道user.checkpermission(url).登陆以后身份变了,但是还是他自己清楚,一样的函数user.checkpermission(url).这个思路和实现基本是自己原创的,欢迎大家探讨。
<authentication mode="Forms">
<forms name="myapp" path="/" loginUrl="login.aspx" protection="All" timeout="30">
<credentials passwordFormat="Clear">
<user name="one" password="one" />
<user name="two" password="two" />
<user name="three" password="three" />
</credentials>
</forms>
</authentication>
<authorization>
<allow users="one,two,three" />
<deny users="?" />
</authorization>
说一下思路,先用SESSION把用户名记录下来在登陆页面!
然后在每个页面对用户名进行检查,如果是空用户名就让他自动跳到登陆页面,如果有用户名就按照权限显示内容!!!
过程,然后其他的每一个页面都继承这个类,当然,登陆页不用继承
dawave(),能否贴出你的代码?
以前寫asp網頁時校驗用戶訪問網頁權限時必須在每個asp網頁第一行寫一個inclue語句,包含文件的功能是校驗用戶訪問網頁權限,而在asp.net中只需在一個配置文件中加上inclue語句,之後所有aspx網頁都會執行inclue語句包括的代碼,我是問這個配置文件名是什麼?
我在Global.asax文件試過,但不起作用.
如果定義類的話,那在每個文件還是要加入一些代碼,而我說的那種方法不用對aspx文件做任何修改就可以執行包含文件中的功能.
我是從去年9月份微軟技術大會里知道asp.net有這個功能,但我那時候還是用其它語言寫數據庫管理程序,所以沒留意,現在要用的時候又記不起來了.
do it in global.asax, in HttpApplication's event handlers, or write some HttpModule
for authentication purpose, you should be using windows integration or forms-based authentication in ASP.NET, but if you insist, try
void Application_AcquireRequestState(Object sender, EventArgs E)
{
string[] s = HttpContext.Current.Request.Url.Segments;
if (s[s.Length-1] != "login.aspx" && (Session["login"] == null || Session["login"] ==""))
Response.Redirect("login.aspx");
}
第二种方法,就是后面wieset等所说的
你可以让你的每个网页都继承于一个page基类,在page基类的page_load中写判断和跳转的代码,如if( Session["user"]==null ) Redriect("login.aspx");
<authentication mode="Forms">
<forms name="login" loginUrl="Login.aspx"></forms>
</authentication> <authorization>
<deny users="?"></deny>
<allow users="*" />
</authorization>
请Fczllc比较一下二者的区别。
这样之后,在Login.aspx页面中验证用户身份,如果有该用户存在,且密码正确,则使用:
FormsAuthentication.RedirectFromLoginPage("", False)
然后,转向下一个页面。
这样,当用户不经login.aspx页面时,会自动转向Login.aspx
User user = (User) Session.StaticObjects["user"];
if (theFile!="login.aspx" && theFile!="logout.aspx") {
if (!user.CheckPermission(Request.Path))
Response.Redirect(thePath+"/login.aspx?ErrorMessageKeyword="+user.LastError
+"&FromPage="+Request.Path);
}
}这是最初的版本,实现基本的检查,很简单,但是可用的,它这个函数放在global里,这样你所有的网页都必须经过它了(我把login,logout除外了)。好处是,你不用在任何网页中关心权限问题,这里已经完全解决了。没有session检查,没有include,网页自己甚至不知道检查的过程。注意!下面的思路很重要:所谓权限检查其实就是用户有没有权力浏览某个网页,我们不从网页自己的角度出发,太多了,容易漏,从用户的角度看就是他有没有权力,用户自己最清楚,用户是分组的,他的权力由他所在组的权力决定,这样就简单多了。组一般也就几十个。所以:在global里申明一个session级的用户,用户从浏览第一个网页看十就有了身份(客人)。客人的权力,他自己知道user.checkpermission(url).登陆以后身份变了,但是还是他自己清楚,一样的函数user.checkpermission(url).这个思路和实现基本是自己原创的,欢迎大家探讨。
在你内部一个页面地址写入
vb的写
Imports System.Web.Security
c#的写
using System.Web.Security;
就是在每个后台代码的开头登录页面不要写啊
道理就是Imports System.Web.Security可以产生cookies
你可一看看msdn呀!!!如果退出就可以写
System.Web.Security.FormsAuthentication.SignOut();
Response.Redirect("index.aspx");
if ( Session("user")<>"用户名" ) then
Redriect("login.aspx")
end if