1. 建立一個網站專案
2. 在app_code 裡面 新建立一個類
/// <summary>
/// 說明:檢查使用者是否有權使用模組的Module
/// 作者:鄭文亮
/// 聯絡:http://www.cnblogs.com/zhwl
/// </summary>
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
public class SystemModuleAuthorizationModule : IHttpModule
{
#region IHttpModule 成員
public void Dispose()
{
}
public void Init(HttpApplication context)
{
context.AcquireRequestState += new EventHandler(context_AcquireRequestState);
}
void context_AcquireRequestState(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
string d = application.Request.Url.ToString();
// 如果使用者未登入,則無需檢查模組授權,因為請求會被使用者登入Module重定向到登入頁面。
if (application.Session["UserName"] == null)
{
string requestUrl = application.Request.Url.ToString();
string requestPage = requestUrl.Substring(requestUrl.LastIndexOf('/') + 1);
// 如果請求的頁面不是登入頁面,剛重定向到登入頁面。
if (requestPage != "Login.aspx")
application.Server.Transfer("Login.aspx");
return;
}
// 獲取使用者名稱和Url
string userName = application.Session["UserName"].ToString();
string url = application.Request.Url.ToString();
// 如果使用者沒有被授權,請求被終止,並列印提示資訊。
if (!Validator.CanUseModule(userName, url))
{
application.CompleteRequest();
application.Response.Clear();
application.Response.Write(string.Format("對不起!{0},您無權訪問此模組!", userName));
}
else
{
application.Response.Write(string.Format("歡迎您!{0}!", userName));
}
}
#endregion
}
public class Validator
{
/// <summary>
/// 檢查使用者是否被授權使用模組。
/// aaa可以使用模組 a.aspx, 其他的情況返回false
/// </summary>
/// <param name="userName"></param>
/// <param name="url"></param>
/// <returns></returns>
public static bool CanUseModule(string userName, string url)
{
if (url.Contains("login.aspx") == true)
{
return true;
}
if (userName == "aaa" && url.Contains("a.aspx"))
{
return true;
}
else
{
return false;
}
}
}
3. web.config 檔案 配置如下
<httpModules>
<add name="SystemModuleAuthorizationModule" type="SystemModuleAuthorizationModule" />
</httpModules>
備註: 因為類檔案放在app_Code 下面 所以沒有加名稱空間的名稱(不需要)
如果是一個wen應用程式
<system.web>
<httpModules>
<add name="SystemModuleAuthorizationModule" type="WebApplication3.SystemModuleAuthorizationModule" />
</httpModules>
</system.web>
註解: WebApplication3 是這個專案的名稱空間
4. 建立login.aspx 裡面有一個按鈕
後臺檔案:
protected void Button1_Click(object sender, EventArgs e)
{
Session["UserName"] = TextBox1.Text.Trim();
}
前臺頁面 :
<div>
<a href="a.aspx">頁面a</a>
</div>
<div>
<a href="b.aspx">頁面b</a>
</div>
5. 建立一個空的a.aspx 和 b.aspx (測試用)