2017-03-15 7 views
1

[承認]のURLを変更するとわかっています。あなたは、web.configファイルにこの行を編集する必要が[承認]を使用してリダイレクトする方法

<authentication mode="Forms"> 
     <forms loginUrl="~/Account/Login" timeout="2880" /> 
    </authentication> 

私は、ページ内の2つの符号を持っていると私は/ F /サインインし、人々別のコントローラから/秒/ URLへのコントローラから人々をリダイレクトしたい場合サインイン?

+0

を持つことになり、最も簡単な方法は、私はこれを解決すると考えることができます'loginUrl'を、ユーザがどのカテゴリにいるかを決定し、適切なsigninアクションにリダイレクトするアクションで置き換えることでしょう。 – spender

+0

リダイレクトアクション(つまり、 'loginUrl'が指すアクション)に文字列パラメータとして' returnUrl'を持たせる必要があります。最初の認証リダイレクトでは、この値がクエリ文字列に入力されます。これをリバースエンジニアリングして、ユーザーの所在を発見することができます。 – spender

+0

文字列パラメータをweb.configに渡すにはどうすればよいですか? – Newbie

答えて

1

loginUrlは、ユーザーを適切にリダイレクトする操作を指すことができます。

それはこのようなものになります。デフォルトのルーティングを想定し、

public class MySpecialLoginController:Controller 
{ 
    public ActionResult Index(string returnUrl) 
    { 
     if(returnUrl.EndsWith("/foo")) //dirty. you could do better... 
     { 
      return RedirectToAction("signin","f"); 
     } 
     //etc 
    } 
} 

をして、loginUrlは余分なリダイレクトの費用で価値"~/MySpecialLogin"

+0

aspnet authがユーザーにページへのアクセス権がないと判断した場合( 'foo/bar'としましょう)、'?returnUrl = foo%のようなクエリ文字列で 'loginUrl'にリダイレクトしますあなたがログインした後に、あなたが来た場所に戻すことができるように、「2fbar」と表示されます。つまり、自動的に入力されます。 – spender

+0

うーん、それはうまくいくはずだが、そうではないのだろうか?私はリダイレクタ(文字列ReturnUrl)と呼ばれるfコントローラでアクションを作成しましたが、そこにブレークポイントを入れましたが、このURLが/ f/Redirectorを表示していても入力していませんか?ReturnUrl =%2fF%2fprofileperson%3fid%3d21&id = 21 – Newbie

+0

私はhttppostを使っていたので心配しませんでした。よく働く!どうも – Newbie

関連する問題