Web API 2单页应用程序-使用内置的登录表单不授权
本文关键字:内置 登录 表单 授权 API 单页 应用程序 Web | 更新日期: 2023-09-27 17:49:43
我正在Visual Studio 2013中开发我的第一个Web API 2单页应用程序。当我开始这个项目时,我选择了身份验证:个人账户。因此,当我构建解决方案时,出现了登录表单。我注册了一个用户,我可以成功登录。
我的控制器已经准备好使用,我把[authorize]-Attribute
放在我的请求前面。
当我没有登录并导航到我的请求时,它向我显示错误消息:
"Authorization has been denied for this request."
这很好,但是当我登录并再次导航到请求时,它仍然显示相同的消息。
没有[authorize]-attribute
,控制器本身工作正常。
我对这个话题很陌生,我找不到任何关于如何将内置登录与授权我的请求连接起来的东西。我希望你能帮助我。
编辑:我刚刚了解了认证和授权的区别。首先是为了识别用户,其次是为了赋予他做任何事情的权利……
所以我尝试了[Authorize(Users="Username")]
,但它不起作用。(它也应该与[Authorize]
一起工作,因为因此您授权所有用户??)
我的应用程序有什么问题?(
编辑2:
我仍在寻找如何获得的access_token进入头!(
当您通过ajax向控制器发送请求时添加您的授权声明令牌
对于每个请求,您需要发送授权令牌
用户成功登录后,在SPA的login.viewmodel.js中,你正在保存数据。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.");
}
});