1

パラメータキーでパスワードをリセットするなどのパラメータを表示しています

 public ActionResult ResetPassword(string Email,string Key)
       {
            //Do some thing
            return View();
        }

フォーム認証を使用しています。私が望むのは、権限のないユーザーがこのビューにアクセスできるようにすることです。

4

3 に答える 3

3

コントローラ アクションは、デフォルトで誰でもアクセスできます。だから、AuthorizeAttributeどこか高いところに設定して、特定のアクションでそれを抑制したいと思いますResetPassword。この目的のために、属性があります[AllowAnonymous]

[AllowAnonymous]
public ActionResult ResetPassword(string Email,string Key)
{
    //Do some thing
    return View();
}

更新: Muhammad Adeel Zahid が指摘したように、これはバージョン 4 以降でのみ機能します:-/ MVC 3 の場合、ここで説明するアプローチを使用できます: ASP.NET MVC 3 アプリケーションの保護

于 2012-06-07T10:16:55.787 に答える
0

使用するAuthorizeAttribute

これにより、認証されたユーザーのみがこの特定のコントローラー アクションの実行を許可されるようになります。MSDN ドキュメントを参照してください。

[Authorize]
public ActionResult ResetPassword(string Email,string Key)
{
    //Do some thing
    return View();
}

Principal: これは、Userオブジェクト インスタンスが設定されている限り、使用している可能性のある任意の認証方法 (適切に記述されていればカスタムの方法でも) で機能します。デフォルトのすぐに使用できる認証方法はそれらに入力されます。カスタム認証方法を使用している場合は、それらが入力されることを確認してください。

常に安全 - オプトアウト

しかし、どうやらコントローラー全体またはアプリケーション全体のいずれかがAuthorizeAttribute. この場合、特定のコントローラー アクションをオプトアウトする必要があります。Juraj が MVC 4 で述べているように、単純に使用する必要がありますAllowAnonymousAttributeが、古いバージョンでは、このページの指示に従って独自に作成できます。

これは、従うべき Microsoft 推奨のアプローチです。

于 2012-06-07T09:58:53.153 に答える
0

解決策は、web.Config に場所を追加し、allowOverride="false" のように設定することです。

<location path="reset.password" allowOverride="false">    
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>

これは私の問題を解決します。皆さんありがとう :)

于 2012-06-07T11:33:07.660 に答える