İlk sorunuza cevaben, bir kullanıcının belirli bir izinden ziyade bir rolü olduğunu kontrol etmedeki en büyük sorun, izinlerin birden fazla rol üstlenebileceğidir. Buna bir örnek olarak, bir geliştirici, muhtemelen menajerleri tarafından tutulan bir izin olan şirket intranetindeki geliştirici portalını görmeye erişebilir. Bir kullanıcı geliştirici portalına erişmeye çalışıyorsa, şuna benzer bir çekiniz olur:
if(SecurityUtils.hasRole(developer)) {
// Grant them access to a feature
} else if(SecurityUtils.hasRole(manager)) {
// Grant them access to a feature
} else if...
( switch
Seçtiğiniz dilde bir ifade daha iyi olurdu, ama yine de düzenli değil)
Bir izin ne kadar yaygın veya yaygınsa, belirli bir sisteme erişebildiğinden emin olmak için kontrol etmeniz gereken kullanıcı rolleri o kadar fazladır. Bu aynı zamanda, bir rol için izinleri her değiştirdiğinizde, bunu yansıtmak için çeki değiştirmek zorunda kalacağınız sorununa yol açacaktır. Büyük bir sistemde bu çok çabuk hantallaşacaktır.
Kullanıcının, örneğin geliştirici portalına erişmesine izin veren izni olup olmadığını kontrol ederseniz, hangi rolde oldukları önemli değildir, erişim izni verilir.
İkinci sorunuzu yanıtlamak için, rolünüzün nedeni, izinlerin "paketlerini" değiştirmek ve dağıtmak kadar kolay davranmalarıdır. Yüzlerce rol ve binlerce izne sahip bir sisteminiz varsa, yeni bir kullanıcı eklemek (örneğin yeni bir İK yöneticisi) geçmenizi ve diğer İK yöneticilerinin sahip olduğu her bir izni vermenizi gerektirir. Bu sadece sıkıcı olmaz, aynı zamanda manuel olarak yapılırsa hatalara açıktır. Bunu sadece bir kullanıcının profiline "İK yöneticisi" rolünü eklemekle karşılaştırın; bu, onlara bu roldeki diğer tüm kullanıcılarla aynı erişimi verecektir.
Varolan bir kullanıcıyı (sisteminiz destekliyorsa) basitçe klonlayabileceğinizi iddia edebilir, ancak bu, kullanıcıya o an için doğru izinleri verirken, gelecekte tüm kullanıcılar için bir izin eklemeye veya kaldırmaya çalışıyor olabilir. zor. Bunun için örnek bir senaryo, belki geçmişte İK personelinin de bordrodan sorumlu olmasıydı, ancak daha sonra şirket, özellikle maaş bordrosunu idare etmek için personel istihdam edecek kadar büyür. Bu, İK'nın artık bordro sistemine erişmesi gerekmediği için izinlerin kaldırılması anlamına geliyor. 10 farklı İK üyeniz varsa, el ile geçmeniz ve kullanıcı hatası olasılığını ortaya çıkaran doğru izni kaldırdığınızdan emin olmanız gerekir. Bununla ilgili diğer sorun, basitçe ölçeklememesidir; Belirli bir rolde gittikçe daha fazla kullanıcı kazandıkça, rol değişikliği çok daha zorlaşır. Bunu, bu rolü taşıyan her kullanıcı tarafından yansıtılacak olan izni kaldırmak için söz konusu genel rolünü değiştirmeniz gereken rolleri kullanmakla karşılaştırın.