这是我在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 . 提前致谢 .

GitHub源代码:https://github.com/RolandoMalena/jogtrackr/tree/master/jogtrackr/Web/JogTrackr

用于从给定 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");
    }