1

最初のC#RazorMVC3プロジェクトを作成しました。以前に手を加えたことがありますが、これは私が作成したのはこれが初めてです。

とにかく、簡単な質問があります。MembershipProvider AspNetSqlProfileProviderデフォルトのプロジェクトでビルドされたものを使用しています。

Home/Index.cshtml私の質問は単純です。ユーザーが別のページに移動できるように、ロードする前にユーザーがログオンしているかどうかをどこでどのように確認すればよいですか?

ログオンしている場合は、カスタマーポータルに移動します。

ログオンしていない場合は、ログオン画面に移動します。

4

3 に答える 3

2

これを設定するより一般的な方法には、次の 2 つの手順が含まれます。

まず、保護するアクションに [Authorize] 属性を追加します。

[Authorize]
public ActionResult Index() {

}

これにより、ユーザーが (FormsAuthentication を使用して) 認証されていることが確認されます。

次に、Web.config ファイルで、ユーザーがログインする必要があるときにリダイレクトされる URL を設定します。

<authentication mode="Forms">
    <forms name="cookieName" loginUrl="~/Account/LogOn" timeout="30" domain=".example.com" slidingExpiration="true" />
</authentication>
于 2012-09-04T21:50:57.013 に答える
2

ここにいくつかのオプションがあります。ホーム/インデックスビューでそれを行うことができ(それがあなたがそれを呼んでいる場合)、次のようなものを使用するだけです:

 if(Request.IsAuthenticated())
    return RedirectToAction("login","login");

または、アプリケーションの起動メソッドで行うこともできます。でも、私はおそらく最初のものだけをやります。

于 2012-09-04T21:47:34.037 に答える
0

ログインしていない場合にユーザーがリダイレクトされるページ (URL ではなく) は、以下で定義されますWeb.config

  <authentication mode="Forms">
      <forms loginUrl="~/Home/GetIn" .... />
    </authentication>

ただし、ログインすると、ASP.NET MVC ルーティングが開始されます。これは、Global.asax.cs既定で次のルートを持っています。

  routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new {
            controller = "Home",
             action = "Index",
             id = UrlParameter.Optional
        } // Parameter defaults

つまり、URL でコントローラーまたはアクションが指定されていない場合、デフォルトHomeIndex

于 2012-09-04T21:50:28.777 に答える