在 IRouteHandler.GetHttpHandler() 中我可以重定向吗?

发布于 2024-07-09 19:17:01 字数 726 浏览 5 评论 0原文

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

因此,我有一个实现 IRouteHandler 的类,在尝试加载特定页面之前,它会检查用户是否处于允许的角色集中。 我的问题是,如果不是,我如何重定向到该处理程序中的登录页面? 我知道在这种情况下可以加载登录页面,但我更喜欢使用“返回”页面等进行干净的重定向。

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 )
    {
        ???
    }
}

As a glutton for unproven sexy techniques I've adopted System.Web.Routing in my Web Forms application to manage navigation and such. Further, I'm hoping to move role-based security from web.config to the route definitions itself so I can say "this route is only available to roles x, y".

So I've got the class that implements IRouteHandler and before it attempts to load a particular page it checks to see if the user is in it's set of allowed roles. My question is, if they aren't, how do I redirect to the login page within that handler? I know it's possible to load the login page in that instance, but I'd prefer a clean redirect with the "returnto" page and all.

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 )
    {
        ???
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

榆西 2024-07-16 19:17:01

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

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

It's possible to do a redirect from GetHttpHandler. Just use:

requestContext.HttpContext.Response.Redirect("login.aspx");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文