c# - asp.net - Web API 2 单页应用程序 - 使用内置登录表单未授权?

标签 c# asp.net asp.net-web-api2 authorize

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

我的 Controller 已准备好使用,我将 [authorize]-Attribute 放在我的请求前面。

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

"Authorization has been denied for this request."

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

Controller 本身在没有[authorize]-attribute的情况下工作正常。

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

编辑:

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

所以我尝试了[Authorize(Users="Username")],但它不起作用。 (它也应该与 [Authorize] 一起使用,因为因此您授权所有用户??)

我的应用程序有什么问题? :(

编辑2:

我仍在寻找如何将 access_token 放入 header 中! :(

最佳答案

当您通过ajax向 Controller 发送请求时,添加您的授权声明 token

对于每个请求,您都需要发送授权 token

用户成功登录后,在 SPA 的 login.viewmodel.js 中保存 data.access_token,每个 ajax 请求都需要发送此 token ,如下所示

如果这回答了您的问题,请检查左侧的右侧。

  $.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.");
            }
        });

关于c# - asp.net - Web API 2 单页应用程序 - 使用内置登录表单未授权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22346163/

相关文章:

c# - 在调用 Read() 之前访问字段的尝试无效。代码不工作

c# - 左侧带有图像的标签 - 防止文本覆盖图片?

c# - 在 Dynamics CRM 中调用 OrganizationService.Associate() 和显式设置实体的外键字段有什么区别?

c# - 如何使用一些变量参数从 javascript 函数调用 asp.net C# 函数并从 C# 函数获取字符串返回?

javascript - 当您使用新的 Checkout 按钮时,PayPal 如何禁用浏览器的工具栏访问

c# - 委托(delegate)多线程 EndInvoke?

c# - 为什么我的代码在这个场景的方法完成之前就退出了?

c# - 与 Oracle 的多个连接 - 多任务

asp.net-web-api2 - Swagger 不支持 Swagger 2.0 : Multiple operations with path

c# - 如何在 webapi Controller 中反序列化来自 json 的参数