2012-06-08 20 views
5

MVC3/4 kullanıyorum. Fakat bu sadece yetkilendirmede genel bir sorudur.Bir rol boşluk içeriyorsa AuthorizeAttribute nasıl yazılır

Sahip olduğum rollerden biri, bir boşluk içeren veritabanında "Yol Gösterici" olarak adlandırıldı.

[Authorize(Roles="'Trip Leader', Administrator")]'u denedim ancak çalışmadı. Biri yardım edebilir mi?

+0

, değeri "Lider Trip" bir sabit hale deneyin:

örneği böyle bir şey olabilir? – Charmander

+0

Nasıl Yapılır? '[Yetkilendirme (Rol = TripLeader, "Yöneticisi")] '? Çalışmayacak. – Blaise

+0

@Blaise Bunu yapmayı başardınız mı? – horgh

cevap

3

ve AuthorizeAttribute kaynaklanıyor: Eğer bir ya/veya yetkilendirme arıyorsanız, bunu deneyin. Daha sonra AuthorizeCore yöntemini geçersiz kılın ve bir boşluk içeren bir rolde doğrulama ile kendi mantığınızı uygulayın.

public class CustomAuthAttribute : AuthorizeAttribute 
{ 
    private readonly IUserRoleService _userRoleService; 
    private string[] _allowedRoles; 

    public CustomAuthAttribute(params string[] roles) 
    { 
     _userRoleService = new UserRoleService(); 
     _allowedRoles = roles; 
    } 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
    //something like this. 
    var userName = httpContext.User.Identity.Name; 
    var userRoles = _userRoleService .GetUserRoles(userName); // return list of strings 
    return _allowedRoles.Any(x => userRoles.Contains(x)); 
    } 

}

Kullanımı

[CustomAuth("role withspace","admin")] 
public ActionResult Index() 
{ 
} 
+0

Güzel! Teşekkür ederim. – Blaise

+0

Hoşgeldiniz, yardım etmekten memnun oldum! –

0

bu deneyin:

[Authorize(Roles="Trip Leader")] 
[Authorize(Roles="Administrator")] 

EDIT: Yukarıdaki kod her iki rolü yerine getirmek için kullanıcı gerektirir. Kendi özelliği oluşturma

[Authorize(Roles="Trip Leader, Administrator")] 
+1

Hey, işe yaramayacak! – Blaise

+0

Aynı sınıfta veya işlevde birden çok Yetkilendirme özniteliği koyabildiğiniz görünmüyor. Sınıfta ve bir VEYA bir OR oluştururken bir VEYA oluşturan gibi görünüyor farklı olanlarınız olabilir. –

İlgili konular