0

MVC アプリケーションで独自のフォーム認証ビューを作成しようとしていますが、サイトでログイン機能が見つからないようです。最初にregulrビューを作成し、ajaxを使用して関数を呼び出してみましたが、うまくいかなかったので、フォームを使用して次のように送信しようとしました:

<form method="post" action="~/Login/Login_btnClick">

<input type="submit" name="Login" value="Login" />

もちろん、Web 構成でもフォーム認証を宣言し、ログイン ページをリンクに設定しました。

<authentication mode="Forms">
  <forms loginUrl="~/Login/Login" defaultUrl="~/Home/index" />
</authentication>
<authorization>
  <deny users="?" />
</authorization>

場所も使用したので、JavaScript と css ファイルが見つかります。私が得たように

リソースの読み込みに失敗しました: サーバーはステータス 400 (Bad Request) で応答しました

エラー、コントローラーフォルダーも場所に追加しようとしました:

<location path="Controllers">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>

しかし、それでも同じエラーが発生しました....

私の問題を解決できるアイデアはありますか?

ありがとう

4

2 に答える 2

2

フォームの送信を処理する対応するコントローラー アクションを作成する必要があります。たとえば、次のフォームがあるとします。

<form method="post" action="/Login/LogOn">
    <input type="submit" name="Login" value="Login" />
</form>

次に、コントローラーでLogOnアクションを作成する必要があります。Login

[HttpPost]
public ActionResult LogOn()
{
    ...
}

また、フォルダーへのアクセスを無効にしている web.config から表示したスニペットControllersは絶対に不要です。ASP.NET では MVC コントローラーがコンパイルされ、アプリケーションをデプロイするときに、そのようなフォルダーはまったく存在しません。

さらに、ASP.NET MVC での承認は[Authorize]、web.config で<authorization>タグを使用するのではなく、属性で制御されます。したがって、たとえば、特定のコントローラー アクションを認証されたユーザーのみがアクセスできるように保護したい場合は、次の属性で単純にデコレートします。

[Authorize]
public ActionResult Index()
{
    ...    
}

some tutorialsASP.NET MVC サイトには、MVC アプリケーションで認証と承認を実装する方法が示されています。

また、インターネット テンプレートを使用して新しい ASP.NET MVC 3 アプリケーションを作成すると、AccountController と対応するビューが既に作成されています。概念をよりよく理解するために、このすぐに使えるテンプレートを試すことができます。

于 2012-11-25T08:01:40.923 に答える
0

おかげで、私は解決策を得ました....

私は2つのことをすべきだった:1。

<deny users="?" />

に:

<allow users="?" />
  1. 私のフォームでアクションを変更して、次のようにします:@ Url.Action( "MyLoginFunc"、 "MyLoginController")
于 2012-11-26T07:27:12.097 に答える