0

認証されたユーザーが自分のデータのみを管理するために安全な領域にアクセスできるようにするために、認証属性が必要です。

私はhttpContext.User.Identity.Nameそれを取得し、それをデータベースから取得したユーザー名と一致させることを考えていました。

これは基本的に良い(安全な)アプローチですか?またはそれは心にもっと安全に行うことができますか?

だから、私のコントローラーはカスタム属性で飾られています

[UserAccountAuthorizeAttribute]
public ActionResult Edit(string username)
{
    return View();
}

オーバーライドしていますAuthorizeAttributeが、デバッグモードで次の行にnull値があります

var rd = httpContext.Request.RequestContext.RouteData;
var username = rd.Values["username"]; // null

何が問題になる可能性がありますか?

4

1 に答える 1

0

クエリ文字列にユーザー名を入力しないでください。

組み込みのASP.NETメンバーシッププロバイダーを使用している場合、アクションは次のようになります。

    [Authorize]
    public ActionResult Edit()
    {
        var userId = (Guid)Membership.GetUser().ProviderUserKey;

        var someService = new MyService();
        var someData = someService.GetSomeDataByUserId(userId);
        //...
    }
于 2013-02-14T22:25:00.570 に答える