6

Ajax リクエストを使用して MVC を呼び出す Jquery を使用した UI があります。

各リクエストを userProfile (アカウント番号、ID などを保持するカスタム クラス) に対して検証したいと思います。

カスタム承認属性を作成して、リクエストとユーザープロファイルの両方が同じであることを検証できるかどうか、誰か提案していただけますか?

次に、以下のようなことをしたいと思います。

[AuthorizeUser]
public ActionResult GetMyConsumption(string accountNumber)
{
  .....
  return View();
}
4

1 に答える 1

17

カスタム Authorize 属性を書くことができます:

public class AuthorizeUserAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var isAuthorized = base.AuthorizeCore(httpContext);
        if (!isAuthorized)
        {
            // The user is not authorized => no need to continue
            return false;
        }

        // At this stage we know that the user is authorized => we can fetch
        // the username
        string username = httpContext.User.Identity.Name;

        // Now let's fetch the account number from the request
        string account = httpContext.Request["accountNumber"];

        // All that's left is to verify if the current user is the owner 
        // of the account
        return IsAccountOwner(username, account);
    }

    private bool IsAccountOwner(string username, string account)
    {
        // TODO: query the backend to perform the necessary verifications
        throw new NotImplementedException();
    }
}
于 2012-04-26T07:18:54.777 に答える