1

ばかげた質問だと思われたら申し訳ありません。私は自分の無能さに対​​する批判を受け入れる準備ができています。私はC#が初めてで、これに関する参考文献を自分で見つけることはできません。この '[Authorize]' は、コード内のクラスに対して何を行っていますか? AccountController が Controller を継承していることを理解しています。Authorizeが括弧内で行っていることを理解していません。System.Web.Mvc.AuthorizeAttribute からもコードを継承していると思いますが、クラスまたはメソッドの前に配置されたときに C# で角かっこが何を意味するのかがわからないため、わかりません。私の質問を明確にしてください、私は尋ねています、クラスまたは関数の前に何かを括弧で囲む目的は何ですか? 何かを受け継いでいるのでしょうか。もしそうなら、コントローラーを継承するのと同じようにコロンを使用してみませんか? 誰かが同様にうまくいくリンク参照を送ることができれば..どんな助けも感謝..

[Authorize]
public class AccountController : Controller
{

以下のこの方法で同じ使用法に気付きました。代わりに [AllowAnonymous] を使用しています..

[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
    ViewBag.ReturnUrl = returnUrl;
    return View();
}
4

1 に答える 1

6

[Authorize] などの括弧内のものは属性と呼ばれます。これらは、(話している属性に応じて) クラス、メソッド、およびプロパティに適用できるメタデータです。

http://msdn.microsoft.com/en-us/library/z0w1kczw.aspx

コードと対話するコードは、リフレクションを使用して、適用された属性と、各属性に関連付けられているパラメーター (存在する場合) を確認できます。

あなたが言及した具体的な例では、

[Authorize]

コントローラーへのアクセスを制御するために、MVC ランタイムによって属性がチェックされます。

http://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute(v=vs.108).aspx

そしてその

[AllowAnonymous]

属性は、コントローラの特定のログイン メソッドが承認を必要としないことを指定します。

http://msdn.microsoft.com/en-us/library/system.web.mvc.allowanonymousattribute(v=vs.108).aspx

于 2012-12-04T00:29:14.587 に答える