2

我只是在 Visual Studio 2013 中开发我的第一个 Web API 2 单页应用程序。当我开始使用该项目时,我选择了身份验证:个人帐户。因此,当我构建解决方案时,出现了登录表单。我注册了一个用户,我可以成功登录。

我的控制器可以使用了,我把它放在[authorize]-Attribute我的请求前面。

当我没有登录并导航到我的请求时,它会向我显示错误消息:

"Authorization has been denied for this request."

这很好,但是当我登录并再次导航到请求时,它仍然向我显示相同的消息。

控制器本身在没有[authorize]-attribute.

我对这个主题真的很陌生,我找不到任何关于如何连接内置登录和授权我的请求的信息。我希望你能帮帮我。

编辑:

我刚刚发现了身份验证和授权的区别。首先是为了识别用户,其次是为了给他做任何事情的权利......

所以我尝试[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 回答