Merhabalar, stackoverflow da sorunumu açıkladım. Burada da sormak istedim. İngilizce ile sorunumuz olmadığını düşünerek baştan buraya yazmıyorum.

http://stackoverflow.com/questions/24912882/how-to-set-user-role-in-spring-security-3/

CEVAP: Cevap dediğim aslında pek de cevap değil. Sorunun kaynağı syntaxdan kaynaklanıyor. Benim kullandığım security yapısından mi kaynaklanıyor yoksa implementationı mı öyle o konuda pek bir fikrim yok ama sorunun kısaca şu; kullanıcı rolu kesinlikle şöyle yapı da olmalı ROLE_X x=istenilen herhangi bir string. Ama ROLE_ kısmı kesinlikle olmak zorunda. Siz ROLE_ADMIN roluna sahip olabilirsiniz anca ADMIN ya da ADMIN_ROLE gibi bir role sahip olamazsanız hata veriyor. En azından benim problemimi çözmüyor bu durum. Belki benim xml dosyalarımda ki bir sorundan ya da dediğim gibi implementation da kaynaklı olabilir. Bu konu hakkında bilgisi olan bizi daha da aydınlatırsa sevinirim.Şimdilik benim bulduğum çözüm bu.

Cevap veren herkese teşekkürler.

soruldu: 25 Tem '14, 04:52

araknafobia's gravatar image

araknafobia
26346
cevap kabul oranı: 0%

değiştirildi: 25 Tem '14, 12:30

Collection<grantedauthority> authorities = new ArrayList<grantedauthority>(); authorities.add(new SimpleGrantedAuthority("USER_ROLE"));


authorities.add(new SimpleGrantedAuthority("ADMIN_ROLE")); authorities.add(new SimpleGrantedAuthority("MANAGER_ROLE"));

(25 Tem '14, 04:56) Turgay Can Turgay%20Can's gravatar image

@J2EE evet işte bende tam onu söylüyorum.Stackoverflowda da belirtmiştim gözününden kaçmış sanırım ;)

authorities.add(new SimpleGrantedAuthority("USER_ROLE")); I think this is the line that we set user authorities as a hardcoded, right? So, If I write authorities.add(new SimpleGrantedAuthority("ROLE_X")); then change the secured tag like <secured attributes="ROLE_X"/> It should work, right? But It just does not. I read some artical about getting roles from database but firstlty I want to be sure it is work or not.

(25 Tem '14, 05:02) araknafobia araknafobia's gravatar image

Çalışır. . ...

(25 Tem '14, 05:23) Turgay Can Turgay%20Can's gravatar image

@J2EE çözümü ilk mesajıma ekledim ancak sebebini hala bilmiyorum siz ADMIN_ROLE şeklinde role tanımlayıp kullanabildiniz değil mi? Veya herhangi bir string. XML den kaynaklı bir sorun mu acaba diye düşündüm benim taglarım <security ile="" başlıyor="" <secured=""/> ile kontrol ediyorum bu sebepten dolayı mı acaba diye merak ettim. Nedense hala sorunun kaynağını bulmak istiyorum...

(25 Tem '14, 12:35) araknafobia araknafobia's gravatar image
1

XML config'lerinize bakmak gerek. Hardcoded bu tür statik/dinamik tanımlamalar yapılabiliyor.

http://bluefoot.info/howtos/spring-security-adding-a-custom-role-prefix/

lütfen inceleyiniz. Fırsat bulursam bu konu ile ilgili küçük bir yazı yazmayı planlıyorum. Git 'e kodu attımmı atmadımmı bilmiyorum. Yazıyı yazdığımda paylaşırım.

(25 Tem '14, 13:07) Turgay Can Turgay%20Can's gravatar image

public Collection<? extends GrantedAuthority> getAuthorities(String userName) {
     // List<String> roles = dao.getRoleNameList(userName);
     List<String> roles = new ArrayList<>();
     roles.add('ROLE_ADMIN');
     roles.add('ROLE_MANAGER');

     List<GrantedAuthority> authList = getGrantedAuthorities(roles);
     return authList;
}

public static List<GrantedAuthority> getGrantedAuthorities(List<String> roles) {
     List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
     for (String role : roles) {
          authorities.add(new SimpleGrantedAuthority(role));
     }
     return authorities;
}

public UserDetails loadUserByUsername(String userName)
        throws UsernameNotFoundException {

    Users user = userDao.loadUserByUserName(userName);

    if (user == null) {
        throw new UsernameNotFoundException(String.format(
                getMessageBundle().getString("badCredentials"), userName));
    }

    boolean enabled = true;
    boolean accountNonExpired = true;
    boolean credentialsNonExpired = true;
    boolean accountNonLocked = true;

    return new User(user.getUserName(), user.getPassword(), enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, getAuthorities(username));

}
permanent link

cevaplandı: 25 Tem '14, 06:48

SaRPaRDa's gravatar image

SaRPaRDa
5.0k213165
cevap kabul oranı: 27%

@sarparda Cevabınız için teşekkürler. Sorunun çözümünü ilk mesaja ekledim ama önerdiğiniz yapıyı bir kaç yerde de görmüştüm güzel bir yapı diye düşünüyorum ve kodu bu yapı ile yazmayı planlıyorum.Tekrar teşekkürler.

(25 Tem '14, 12:37) araknafobia araknafobia's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×128
×10
×2

Soruldu: 25 Tem '14, 04:52

Görüntüleme: 660 kez

Son güncelleme: 25 Tem '14, 13:13

powered by BitNami OSQA