【发布时间】:2017-08-14 21:59:26
【问题描述】:
我正在尝试制作一个使用 Jwt 令牌身份验证的 Web 应用程序,登录等工作正常。
现在我正在尝试添加对谁可以访问哪些页面等的授权。在我的控制器上,我添加了[Authorize]。但是当我登录并尝试执行其中一项操作时,我总是得到一个空白页面,当我检查它时,该操作总是返回 401 Unauthorized,有什么建议吗?
用于将授权标头发送到 Api 的我的标头服务:
using System.Collections.Generic;
namespace RelationizeWeb.Facade.Services
{
public class HeaderService : IHeaderService
{
private const string AuthorizationHeaderKey = "Authorization";
private const string BearerHeaderValue = "Bearer";
public Dictionary<string, List<string>> CreateAuthorizationHeader(string token)
{
var dict = new Dictionary<string, List<string>>
{
{ AuthorizationHeaderKey, new List<string>{ $"{BearerHeaderValue} {token}" } }
};
return dict;
}
public Dictionary<string, List<string>> CreateHeader(string key, string value)
{
var dict = new Dictionary<string, List<string>>
{
{ key, new List<string> { value } }
};
return dict;
}
}
}
我们在 OpinionMakerService 中提出的 Api 请求示例:
public IEnumerable<OpinionMaker> GetOpinionMakers(JwtTokenResponse jwt)
{
try
{
return (List<OpinionMaker>)_relationizeApiAgent.GetOpinionMakersWithHttpMessages(_headerService.CreateAuthorizationHeader(jwt.AccessToken)).Body;
}
catch(Exception)
{
return null;
}
}
【问题讨论】:
-
你在使用 .NET Core 吗?
-
是的,我正在使用 .NET Core 框架
-
当我们几周前开始这个项目时,我们总是总是重定向到登录页面,现在我们添加的不仅仅是一个登录页面,这还不够。我们还想要一些公共页面,并认为这是最好的方法
-
在没有 IIS 的情况下运行它我设法捕获了这个错误
Authorization failed for user: (null).有什么建议吗? -
未为登录用户设置声明身份
标签: c# model-view-controller jwt