使用OWIN对经典ASP页面进行授权



我有一个古老的经典ASP网站,它曾经使用Windows身份验证进行访问控制,但现在已经不合适了。我想我可能会尝试用ASP.NET MVC 5应用程序包装这个网站,所以我:

  • 创建了一个包含ASP.NET标识的新网站
  • 创建了一个用户
  • 将经典ASP网站复制到根目录中
  • 查看了经典的ASP网站

现在我需要做的是要求对所有.asp页面进行授权,这样只有授权用户才能看到它们。做这件事最好的方法是什么?也许我可以和欧文做点什么?

Crispin

根据这个例子,我创建了一个HttpModule,如下所示:

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答案,我删除了以下行:

var identity = new ClaimsIdentity(claims, authenticationType, ClaimTypes.Name, ClaimTypes.Role);
var principal = new ClaimsPrincipal(identity);
System.Threading.Thread.CurrentPrincipal = principal;
HttpContext.Current.User = principal;

并将其替换为我自己的声明检查,以确定用户是否经过了身份验证。返回了适当的布尔值。

相关内容

  • 没有找到相关文章

最新更新