Owin Bearer Jetonlarını kullanan kullanıcıları yönetmek için Identity kullanan küçük bir Web API uygulamasına sahibim. Bu uygulamanın temelleri iyi çalışıyor: Kullanıcı kaydedebilir, bir kullanıcıyla giriş yapabilir ve [Authorize]
ile işaretlenmiş Web API uç noktalarına erişebilirim.Web API ile Kimlik Yetkilendirmesi Öznitelik Rolleri
Bir sonraki adım, rolleri kullanarak Web API uç noktalarını sınırlamaktır. Örneğin, yalnızca Yönetici rolündeki kullanıcıların erişebileceği bir denetleyici. Yönetici kullanıcıyı aşağıdaki gibi oluşturdum ve bunları Yönetici rolüne ekliyorum. Ancak varolan denetleyicileri [Authorize]
'dan [Authorize(Roles = "Admin")]
'a güncelleştirdiğimde ve Adim hesabını kullanarak erişmeye çalıştığımda, bir 401 Unauthorized
alırım.
//Seed on Startup
public static void Seed()
{
var user = await userManager.FindAsync("Admin", "123456");
if (user == null)
{
IdentityUser user = new IdentityUser { UserName = "Admin" };
var createResult = await userManager.CreateAsync(user, "123456");
if (!roleManager.RoleExists("Admin"))
var createRoleResult = roleManager.Create(new IdentityRole("Admin"));
user = await userManager.FindAsync("Admin", "123456");
var addRoleResult = await userManager.AddToRoleAsync(user.Id, "Admin");
}
}
//Works
[Authorize]
public class TestController : ApiController
{
// GET api/<controller>
public bool Get()
{
return true;
}
}
//Doesn't work
[Authorize(Roles = "Admin")]
public class TestController : ApiController
{
// GET api/<controller>
public bool Get()
{
return true;
}
}
S: kurmak ve rolleri kullanılacak doğru yolu nedir?
Yönetici rolündeki doğru kullanıcı için yeni oluşturulan rol 'Yönetici' ve UserRole tablosu için Rol tablosunu kontrol ettiniz mi? Kimlik çerçevesi 2.0 veya üstü kullanıyor musunuz? – DSR