0

ASP.Net MVC 4 Web サイトがあります。このサイトを始めたとき、私には Web プログラミングの経験がほとんど、またはまったくありませんでした。また、すべてを適切にセットアップしたとは思えません。

私は、Home、Login、Register などのページをパブリックと見なし、VerifyPIN や AccountCreated などのページを内部と見なし、Dashboard や Profile などのページを非公開と見なしています。

公開ページには匿名ユーザーがアクセスする必要があると思いますが、ユーザーがログインすると、ログインと登録にはアクセスできません。

内部ページ サーバーのリダイレクト時にのみ使用可能になり、ブラウザーからは使用できないようにしたい。別名、ユーザーが www.MySite.com/AccountCreated に入力できないようにしたい。

また、非公開ページはログインしているユーザー専用です。

プライベート ページは正常に動作しているように感じますが、上記のように他のページへのアクセスを制限する方法がわかりません。ログインしたユーザーがログインページにアクセスできないようにするという私の考えは、おそらく見当違いです。

サイトの ajax の性質により、私のサイトは比較的小規模です。私はすべての公開ページで [AllowAnonymous] を使用していますが、ログインしているユーザーは引き続きそれらにアクセスでき、それを防ぐ方法がわかりません。

私の質問は、

ユーザーがアドレス バー (www.MySite.com/AccountCreated) からページにアクセスできないようにするにはどうすればよいですか?

ユーザーがログインした後、[AllowAnonymous] ページへのアクセスを防ぐにはどうすればよいですか。

編集

ログオンしているユーザーが、ログインなどの特定の匿名ページにアクセスできないようにするのは正常ですか?

4

4 に答える 4

3

ユーザーがすでにログインしているかどうかをいつでも確認できます。ログインしている場合は、別のページにリダイレクトされます。

public ActionResult AccountCreated(some params)
{
           if (Request.IsAuthenticated)
            {
                return RedirectToAction("Index")
            }
            else
             {
              // login logic here
              }
}

ビューで直接確認することもできます。

@if (Request.IsAuthenticated)
{
   <span> You are already logged in</span>
}
else
{
  //Login form here
}
于 2013-10-08T14:45:35.850 に答える
1

いくつかのアイデアです(実際には試していません)。

  • 質問1について- AccountCreatedが、登録フォームが実際にその URL に POST することを意味するアクションである場合 -つまり、外部からアクセス可能です。リクエストのみを処理するようにHttpPost属性を適用することをお勧めしますPOST- ここでできることはあまりありません
  • ポイント2については、アクションメソッドで次のようなことができます
 if (HttpContext.User.Identity.IsAuthenticated)
            {
                return RedirectToAction("Index", "Home");
            }
else return View();
于 2013-10-08T14:48:58.077 に答える
0

考えただけで、ユーザーがLoginまたはRegisterページに移動したときにユーザーをサインアウトします。loginユーザーがアクセスしたり、Register ページにアクセスしたり、ユーザーが認証されているかどうかを確認したりするためのリンクをプライベートページに提供していないことを願っていHomeます。.URLenterYou'll be logged out if you proceed to whatever page

于 2013-10-08T14:51:07.870 に答える