这是我在SO的第一篇文章。
我有一个ASP.NET项目,它在后端使用Web API,使用承载令牌身份验证,使用PostMan完美运行。虽然,我在前端挣扎(SPA只使用jQuery)。
我想要的是能够使用附加的承载令牌调用MVC操作并成功通过身份用户进行身份验证,以便我可以获得下一个好处:
使用[授权]属性调用MVC操作。我想在服务器中处理身份验证和授权,而不是使用JavaScript。它还将处理角色授权。
-Call MVC Action将实例化Api Controller并调用Api Action,从Api Actions响应创建ViewModel并生成局部视图。这将避免jQuery将数据插入DOM,因为MVC操作将返回带有数据的部分视图。
- 使用从MVC Action传递的模型,使用Razor部分视图。它还允许我在部分视图上使用条件,因此如果具有管理员角色的用户请求它,我可以显示额外的内容。
我已经读过MVC应该使用Cookie身份验证进行身份验证,我将如何实现这一目标?我的登录表单在提交时直接通过AJAX请求承载令牌。提前谢谢。
GitHub,源代码:https://github.com/RolandoMalena/jogtrackr/tree/master/jogtrackr/Web/JogTrackr
从给定端点获取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");
}