1. 程式人生 > >asp.net一個已實現的登陸過濾器

asp.net一個已實現的登陸過濾器

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Text.RegularExpressions;

namespace MyMook
{
    public class MyHttpModule : IHttpModule
    {
        public void Dispose()
        {
        }

        public void Init(HttpApplication application)
        {
            application.AcquireRequestState += new EventHandler(context_AcquireRequestState);
           // application.BeginRequest += new EventHandler(context_AcquireRequestState);
          //這裡面要注意千萬不要寫成BeginRequest,那樣就會無法獲得session
        }

        void context_AcquireRequestState(Object source, EventArgs e)
        {
            HttpApplication application = (HttpApplication)source;
            HttpContext context = application.Context;
            string path=context.Request.Path;
            if (!context.Request.CurrentExecutionFilePathExtension.Equals(".aspx") && !context.Request.CurrentExecutionFilePathExtension.Equals(".ashx") ) {
                return;
            }//此處保證只過濾aspx/ashx/htm的請求
            Match m = Regex.Match(path,@"/WebLogin/+");
            if (m.Success) {
                return;
            }//不過濾資料夾WebLogin中的內容
            try
            {
                object user = context.Session["user"];
                if (user == null)
                {
                    context.Response.Redirect("~/WebLogin/Login.aspx");
                }
                else {
                    return;
                }
            }
            catch {
                context.Response.Redirect("~/WebLogin/Login.aspx");
            }
        }

        } 
    }

在web.config中:
      <httpModules>
          <add  name="MyHttpModule" type="MyMook.MyHttpModule,MyMook"/>
      </httpModules>

要點:

1.註冊事件時,不要寫application.BeginRequest,這樣會導致無法獲得Session.

         application.AcquireRequestState += new EventHandler(context_AcquireRequestState);
           // application.BeginRequest += new EventHandler(context_AcquireRequestState);

相關推薦

asp.net一個實現登陸過濾器

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; using System.Text.RegularExpres

asp.net mvc自定義特性+過濾器 實現請求時呼叫自定義方法

一:定義一個特性 [AttributeUsage(AttributeTargets.Method)] //用於方法的特性 public class UniteAttribute : System.Attribute { public st

Asp.net基於session實現購物車的方法

lai 程序 clas contain ext info border mode man 本文實例講述了asp.net基於session實現購物車的方法。分享給大家供大家參考,具體如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1

ASP.NET一個簡易的WebServer,用控制臺程序模擬IIS 托起web服務

public 程序 控制臺 ProcessRequestHandler( page, query, TextWriter writer); WebServer : MarshalByRefObject, IRegisteredObject { Pro

ASP.NET Core 簡單實現七牛圖片上傳(FormData 和 Base64)

private stream public 圖片 ASP.NET Core 簡單實現七牛圖片上傳(FormData 和 Base64)七牛圖片上傳 SDK(.NET 版本):https://developer.qiniu.com/kodo/sdk/1237/csharpUpoladServic

(轉)ASP.NET(C#)FileUpload實現上傳限定類型和大小的文件到服務器

web 環境 posted using 結果 ring event run ont 上傳文件有兩個主要的目的地,一個是服務器,另一個是數據庫,ASP.NET內置了FileUpload這個上傳控件,文本框顯示用戶選擇的文件的全名. 其屬性主要包括: ContenLength:

ASP.NET MVC+Bootstrap 實現短信驗證

add this val data charset tracking load fadein 發送 短信驗證大家都已經非常熟悉了,基本上每天都在接觸手機短信的驗證碼,比方某寶,某東購物。站點註冊,網上銀行等等,都要驗證我們的手機號碼真實性。這樣做有什麽優

基於ASP.NET WebAPI OWIN實現Self-Host項目實戰

hosting 知識 工作 develop plist 簡單 eba 直接 sock 引用 寄宿ASP.NET Web API 不一定需要IIS 的支持,我們可以采用Self Host 的方式使用任意類型的應用程序(控制臺、Windows Forms 應用、WPF 應

Asp.net MVC簡單實現生成Excel並下載

user query 輔助類 his rpath play 是我 none mod 由於項目上的需求,需要導出指定條件的Excel文件。經過一翻折騰終於實現了。 現在把代碼貼出來分享 (直接把我們項目裏面的一部份輔助類的代碼分享一下) 我們項目使用的是Asp.Net M

ASP.NET】UCenter實現多站點同步註冊

res login oct bst center 實現 log conf https 問題描述 上一篇文章寫了【ASP.Net】UCenter實現多站點同步登錄退出 在整合論壇的時候,同步註冊也是相當必要的一個功能:將論壇註冊的用戶同步到自己的網站,自己網站註冊

ASP.NET—013:實現帶控件的彈出層(彈出框)

btn script lock 技術分享 trac borde stat -s scroll 在頁面中用到彈出新頁面的情況比較多的,一般來說都是使用JS方法showM

ASP.NET WebApi OWIN 實現 OAuth 2.0(自定義獲取 Token)

href timespan 獲取 edi prot cep b- med 2-0 相關文章:ASP.NET WebApi OWIN 實現 OAuth 2.0 之前的項目實現,Token 放在請求頭的 Headers 裏面,類似於這樣: Accept: application

微軟與開源幹貨對比篇_PHP和 ASP.NET在 Session實現和管理機制上差異

ima 影響 前言 很難 刪除 定性 缺點 重新編譯 state 微軟與開源幹貨對比篇_PHP和 ASP.NET在 Session實現和管理機制上差異 前言:由於開發人員要靠工具吃飯,可能和開發工具、語言、環境呆的時間比和老婆孩子親人在一起的時間還多,所以每個人或多或少對自

ASP.NET中GridView實現行滑鼠滑過及選擇變色

https://blog.csdn.net/u010568463/article/details/44835833   一、滑鼠滑過變色 只要要給GridView新增OnRowDataBound方法即可。 前臺程式碼: <asp:GridView ID="GridView

ASP.NET Core 如何實現404錯誤跳轉到主頁

假如使用者在Web瀏覽器上敲錯了URL,訪問了ASP.NET Core站點下一個不存在的URL地址,那麼預設情況下ASP.NET Core會返回給瀏覽器著名的404錯誤,那麼有什麼辦法可以讓ASP.NET Core返回404的Http狀態碼時,自動跳轉到主頁嗎?   使用ASP.NET Core

ASP.NET Web API實現簡單的檔案下載與上傳

ASP.NET Web API實現簡單的檔案下載與上傳。首先建立一個ASP.NET Web API專案,然後在專案下建立FileRoot目錄並在該目錄下建立ReportTemplate.xlsx檔案,用於下面示例的使用。 1、檔案下載 示例:實現報表模板檔案下載功能。 1.1 後端程

基於ng-zorro的ASP.NET ZERO前端實現之程式碼生成器

上一篇介紹了整合ng-zorro的過程,本篇我們來看下如何用abp官方的生成器來生成前端程式碼。 Abp官方提供了一個強大的程式碼生成器 ASP.NET Zero Power Tools,它的Visual Studio 外掛在這裡。當然你也可以不用外掛,但你得自己建立json檔案。相關官方文件見這裡。

Asp.Net Core + SignalR 實現實時通訊

一、搭建專案 1、建立一個ASP.NET Core MVC 專案   2、nuget 下載和安裝 MicroSoft.AspNetCore.SignalR vs提示版本衝突 這時我們選擇低版本即可 二、SignalR配置 1、在model中建立一個類MyHub 程式

asp.net後臺管理系統-登陸模塊-路由權限控制_1

val else if .net ride ini 前端框架 == 獲取 lower using System.Web.Routing; //重寫System.Web.Routing中Initialize方法 protected override voi

asp.net後臺管理系統-登陸模組-路由許可權控制_1

using System.Web.Routing; //重寫System.Web.Routing中Initialize方法 protected override void Initialize(RequestContext requestContext) {