В IRouteHandler.GetHttpHandler () можно ли перенаправить? - PullRequest
4 голосов
/ 09 декабря 2008

В качестве обжорства для непроверенных сексуальных приемов я принял 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 )
    {
        ???
    }
}

1 Ответ

4 голосов
/ 26 января 2009

Возможно сделать перенаправление из GetHttpHandler. Просто используйте:

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