パラメータキーでパスワードをリセットするなどのパラメータを表示しています
public ActionResult ResetPassword(string Email,string Key)
{
//Do some thing
return View();
}
フォーム認証を使用しています。私が望むのは、権限のないユーザーがこのビューにアクセスできるようにすることです。
パラメータキーでパスワードをリセットするなどのパラメータを表示しています
public ActionResult ResetPassword(string Email,string Key)
{
//Do some thing
return View();
}
フォーム認証を使用しています。私が望むのは、権限のないユーザーがこのビューにアクセスできるようにすることです。
コントローラ アクションは、デフォルトで誰でもアクセスできます。だから、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 アプリケーションの保護
AuthorizeAttribute
これにより、認証されたユーザーのみがこの特定のコントローラー アクションの実行を許可されるようになります。MSDN ドキュメントを参照してください。
[Authorize]
public ActionResult ResetPassword(string Email,string Key)
{
//Do some thing
return View();
}
注
Principal
: これは、User
オブジェクト インスタンスが設定されている限り、使用している可能性のある任意の認証方法 (適切に記述されていればカスタムの方法でも) で機能します。デフォルトのすぐに使用できる認証方法はそれらに入力されます。カスタム認証方法を使用している場合は、それらが入力されることを確認してください。
しかし、どうやらコントローラー全体またはアプリケーション全体のいずれかがAuthorizeAttribute
. この場合、特定のコントローラー アクションをオプトアウトする必要があります。Juraj が MVC 4 で述べているように、単純に使用する必要がありますAllowAnonymousAttribute
が、古いバージョンでは、このページの指示に従って独自に作成できます。
これは、従うべき Microsoft 推奨のアプローチです。
解決策は、web.Config に場所を追加し、allowOverride="false" のように設定することです。
<location path="reset.password" allowOverride="false">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
これは私の問題を解決します。皆さんありがとう :)