这是我在SO的第一篇文章 .
我有一个ASP.NET项目,它在后端使用Web API,使用承载令牌身份验证,使用PostMan完美运行 . 虽然,我在前端挣扎(SPA只使用jQuery) .
我想要的是能够使用附加的Bearer Token调用MVC Action并成功通过Identity User进行身份验证,这样我就可以获得下一个好处:
-Call MVC Action with [Authorize]属性 . 我想在服务器中处理身份验证和授权,而不是使用JavaScript . 它还将处理角色授权 .
调用MVC Action,它将实例化Api控制器并调用Api Action,从Api Actions响应创建ViewModel并生成局部视图 . 这将避免jQuery将数据插入DOM,因为MVC操作将返回带有数据的部分视图 .
使用从MVC Action传递的模型,使用Razor部分视图 . 它还允许我在部分视图上使用条件,因此如果具有管理员角色的用户请求它,我可以显示额外的内容 .
我已经读过MVC应该使用Cookie身份验证进行身份验证,我将如何实现这一目标?我的登录表单在提交时直接通过AJAX请求Bearer Token . 提前致谢 .
用于从给定 endpoints 获取HTML的JavaScript函数:
function getHTML(endPoint, callback) {
$.ajax({
//headers: { Authorization: 'Bearer ' + sessionStorage.getItem('accessToken') },
datatype: "text/html",
type: "GET",
url: endPoint,
cache: true,
success: function (result) {
callback(result);
}
});
调用上述函数的示例:
getHTML('/Entries/GetWeeklyReport', function (result) {
content.find("#loading").before(result);
});
示例MVC控制器,注意我GetUserId()返回null:
public PartialViewResult GetWeeklyReport()
{
//this returns null
var temp = User.Identity.GetUserId();
return PartialView("_WeeklyReport");
}