2

Visual Studio 2013 で最初の Web API 2 シングル ページ アプリケーションに取り組んでいるところです。プロジェクトを開始したとき、認証: 個人アカウントを選択しました。そのため、ソリューションをビルドすると、ログイン フォームが表示されました。ユーザーを登録し、正常にログインできました。

コントローラーを使用する準備ができており[authorize]-Attribute、リクエストの前に を配置しました。

ログインせずにリクエストに移動すると、次のエラー メッセージが表示されます。

"Authorization has been denied for this request."

それは素晴らしいことですが、ログインして再度リクエストに移動すると、同じメッセージが表示されます。

コントローラー自体は、[authorize]-attribute.

私はこのトピックに本当に慣れていないので、組み込みのログインをリクエストの承認に接続する方法について何も見つかりませんでした。あなたが私を助けてくれることを願っています。

編集:

認証と承認の違いについて知りました。1 つ目はユーザーを識別するため、2 つ目はユーザーに何かを行う権利を与えるためです...

だから私は試し[Authorize(Users="Username")]ましたが、うまくいきません。[Authorize](したがって、すべてのユーザーを承認するため、同様に機能するはずです??)

アプリケーションの何が問題になっていますか? :(

編集2:

access_token をヘッダーに取得する方法をまだ探しています! :(

4

1 に答える 1

2

ajax を介してコントローラーにリクエストを送信する場合は、承認クレーム トークンを追加します。

リクエストごとに、認証トークンを送信する必要があります

ユーザーが正常にログインした後、SPA の login.viewmodel.js で data.access_token を保存しています。このトークンは、以下のように ajax リクエストごとに送信する必要があります。

これがあなたの質問に答えた場合は、右側の左側にチェックを入れてください。

  $.ajax(url, {
                type: "POST",
                data: data,
                headers: "Authorization": "Bearer " + accessToken
            });




  dataModel.login({
            grant_type: "password",
            username: self.userName(),
            password: self.password()
        }).done(function (data) {
            self.loggingIn(false);

            if (data.userName && data.access_token) {
                app.navigateToLoggedIn(data.userName, data.access_token, self.rememberMe());
            } else {
                self.errors.push("An unknown error occurred.");
            }
        }).failJSON(function (data) {
            self.loggingIn(false);

            if (data && data.error_description) {
                self.errors.push(data.error_description);
            } else {
                self.errors.push("An unknown error occurred.");
            }
        });
于 2014-03-12T10:22:14.527 に答える