自己的授权拒绝角色
本文关键字:角色 拒绝 授权 自己的 | 更新日期: 2023-09-27 17:53:54
我最近加入了一个项目团队,负责为项目的后端设置用户角色。它使用ASP。. NET c# WebApi与Owin。我的问题是,当我像这样给控制器方法分配属性时:
[Authorize(Roles = "Admin")]
对此请求的响应始终是拒绝授权。但是如果我简单地使用:
[Authorize]
它的工作原理。请注意,我是用一个被分配了Admin角色的用户登录的。
我注意到这个问题类似于:授权角色WebAPI oauth own
然而,似乎他们在startup.cs中的代码是不同的,否则我很难正确地遵循答案。
我必须处理的startup.cs中的代码是:
public void Configuration(IAppBuilder app)
{
// configure OAuth
ConfigureOAuth(app);
// configure Mvc
HttpConfiguration config = new HttpConfiguration();
WebApiConfig.Register(config);
app.UseWebApi(config);
}
public void ConfigureOAuth(IAppBuilder app)
{
OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
Provider = new SimpleAuthorizationServerProvider()
};
// Token Generation
app.UseOAuthAuthorizationServer(OAuthServerOptions);
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
}
是否有别的东西我需要添加在这里,以允许角色,或者它应该是在代码的其他地方。我对ASP并不完全熟悉。. NET c# MVC或WebApi,任何帮助都非常感谢。
In SimpleAuthorizationServerProvider
有GrantResourceOwnerCredentials
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) {
await Task.Run(
() => {
...logging logic...
var loginResult = authRepository.Login(context.UserName, context.Password);
if (!loginResult.Success) return;
...logging logic...
var claims = new List < Claim > ();
claims.add(new Claim(ClaimTypes.Role, loginResult.Role)); < --here
var id = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ExternalBearer);
context.Validated(id);
});
}
loggingResult
是存储库/DAL层返回的东西