0

私がやろうとしているのは、基本的にWebアドレスに入力できることであり、ユーザー名に従ってmysite/usernameそこのページ()にリダイレクトされます。mysite/Profle/Default.aspx?username=username

4

1 に答える 1

0

これはURLの書き換え以上のものを必要とするかもしれないと思います。

との間には実際の違い(urlrewrite正規表現で区別できる)がないため、次のようなことを行う必要がある場合がありますmysite/usernamemysite/directory

global.asaxで、BeginRequest関数をオーバーライドします。リクエストパスが既知のユーザー名と一致するかどうかを確認します。含まれている場合は、リダイレクトします。そうでない場合は、リクエストを自然に続行します。サイト内のディレクトリと一致するユーザー名がある場合、これにより問題が発生する可能性があることに注意してください。また、悪意のあるユーザーがログインページにリダイレクトする名前を学習することで、サイトのユーザー名を見つける方法を(時間はかかりますが)明らかにします。

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        var url = HttpContext.Current.Request.RawUrl;

        IEnumerable<string> userNames = GetKnownUserNames(); //Get known user names from your repository

        if (userNames.Contains(url))
        {
            Response.Redirect(String.Format("mysite/Profle/Default.aspx?username={0}", url));
        }
    }

比較を正しく機能させるには、微調整が必​​要になる場合がありますが、これでうまくいきます。

于 2012-04-09T14:52:49.083 に答える