【问题标题】:In IRouteHandler.GetHttpHandler() Can I redirect?在 IRouteHandler.GetHttpHandler() 中可以重定向吗?
【发布时间】:2010-09-25 23:11:53
【问题描述】:

作为未经证实的性感技术的贪吃者,我在我的 Web 表单应用程序中采用了System.Web.Routing 来管理导航等。此外,我希望将基于角色的安全性从 web.config 转移到路由定义本身,因此我可以说“此路由仅适用于角色 x、y”。

所以我得到了实现 IRouteHandler 的类,在它尝试加载特定页面之前,它会检查用户是否在它的一组允许角色中。我的问题是,如果不是,我如何重定向到该处理程序中的登录页面?我知道可以在该实例中加载登录页面,但我更喜欢带有“returnto”页面和所有内容的干净重定向。

public IHttpHandler GetHttpHandler(RequestContext requestContext) {

if ( AllowedRoles != null )
{
    bool allowed = false;

    for ( int i = 0; i < AllowedRoles.Length; i++ )
    {
        if ( requestContext.HttpContext.User.IsInRole( AllowedRoles[i] ) )
        {
            allowed = true;
            break;
        }
    }

    if ( !allowed )
    {
        ???
    }
}

【问题讨论】:

    标签: security webforms routing roles


    【解决方案1】:

    可以从 GetHttpHandler 进行重定向。只需使用:

    requestContext.HttpContext.Response.Redirect("login.aspx");
    

    【讨论】:

    猜你喜欢
    • 2013-09-27
    • 2023-03-10
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多