我的任务是找到一种方法来控制对ClickOnce链接的访问,使用Forms身份验证。
Google快速搜索引导我this article: Make ClickOnce Work With ASP.NET Forms Authentication。 在尝试实现这个复杂的过程之后,我意识到如果编写了一个简单的IHttpHandler来处理所有ClickOnce文件类型(例如 .application,.deploy ),那么我可以轻松地检查当前用户是否经过验证。
所以我的处理程序将是:
public class ClickOnceApplicationHandler : IHttpHandler
{
public bool IsReusable
{
get { return true; }
}
/// <summary>
/// Entry point for the handler, here we determine if we have an authenticated user.
/// </summary>
/// <param name="context"></param>
/// <remarks></remarks>
public void ProcessRequest(System.Web.HttpContext context)
{
var _path = context.Server.MapPath(context.Request.Path).ToLower();
if (context.User.Identity.IsAuthenticated && System.IO.File.Exists(_path))
{
if (_path.EndsWith(".application") || _path.EndsWith(".fuple"))
{
//do the stuff I need to here if user is authenticated.
//redirect to the myapp.appication
}
}
else
{
throw new HttpException(404, "File not found");
}
}
}
任何人都可以看到未经授权的用户如何过去吗?