我最近加入了一个项目团队,其任务是为项目的后端设置用户角色。 它使用ASP.NET C#WebApi和Owin。 我的问题是,当我为Controller方法分配一个属性时:
[Authorize(Roles = "Admin")]
此请求的响应始终是“已拒绝授权”。 但是如果我只是使用:
[Authorize]
有效。 请注意,我正在使用已分配Admin of Admin的用户登录。
我注意到这个问题类似于:Authorization roles WebAPI oauth owin
然而,似乎他们在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并不完全熟悉,我们非常感谢任何帮助。
答案 0 :(得分:1)
在 $(document).ready(function() {
$("#button").click(function(){
alert("hello");
var a = $("textarea").val();
var b = $("#search").val();
var c = $("textarea").length;
var d = $("#search").length;
var array = [];
var st = "";
for(var e=0;e<c;e++)
{
for (var f=0;f<d;f++)
{
if(a[e+f] === b[f])
{
alert(a[e+f]);
array.push(a[e+f]);
if (array.length === d)
{
for(var g in array)
{
st += array[g];
}
a.substr(e,e+f).replaceWith("vinh");
break;
}
}
else
{
break;
}
}
}
});
});
你有像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);
});
}
是您的存储库/ DAL层返回的内容