2016-04-28 385 views
1

我有一個古老的經典ASP網站,它曾經使用Windows身份驗證進行訪問控制,但這不再合適。我想我可能會嘗試在ASP.NET MVC應用5包這個網站,所以我:使用OWIN授權經典ASP頁面

  • 創建了一個新的網站完成與ASP.NET身份
  • 創建了一個用戶
  • 複製的經典ASP網站入根
  • 觀看經典ASP網站

現在我需要做的是要求對所有的.asp頁的授權,以便只有授權的用戶才能看到它們。這樣做的最好方法是什麼?也許我可以用OWIN做點什麼?

克里斯賓

回答

1

this example我創建的出來像這樣的HTTP模塊:

public class ClassicAspAuthorization : IHttpModule 
    { 
    private MyEventHandler _eventHandler = null; 

    public void Init(HttpApplication context) 
     { 
     context.BeginRequest += new EventHandler(OnBeginRequest); 
     } 

    public delegate void MyEventHandler(Object s, EventArgs e); 

    public event MyEventHandler MyEvent 
     { 
     add { _eventHandler += value; } 
     remove { _eventHandler -= value; } 
     } 

    public void OnBeginRequest(Object s, EventArgs e) 
     { 
     HttpApplication app = s as HttpApplication; 

     if (app.Request.CurrentExecutionFilePathExtension.EndsWith(".asp") == true && blnIsAuthenticated() == false) 
      { 
      app.Context.Response.Redirect("/Account/Login"); 
      } 

     if (_eventHandler != null) 
      { 
      _eventHandler(this, null); 
      } 
     } 

和布爾(blnIsAuthenticated),其確定用戶是否被認證是從衍生方法Stackoverflow answer其中我刪除了行:

var identity = new ClaimsIdentity(claims, authenticationType, ClaimTypes.Name, ClaimTypes.Role); 

var principal = new ClaimsPrincipal(identity); 

System.Threading.Thread.CurrentPrincipal = principal; 
HttpContext.Current.User = principal; 

並將其替換爲我自己的聲明檢查以確定用戶是否已通過身份驗證。返回了一個合適的布爾值。