সর্বাধিক উত্তরগুলি কিছু পয়েন্ট অনুপস্থিত:
ভূমিকা এবং কর্তৃত্ব বসন্তে একই জিনিস নয়। আরও বিশদ জন্য এখানে দেখুন।
ভূমিকার নামগুলি rolePrefix
+ এর সমান authority
।
ডিফল্ট ভূমিকা উপসর্গ ROLE_
, এটি কনফিগারযোগ্য। এখানে দেখুন ।
অতএব, একটি যথাযথ ভূমিকা চেকটি কনফিগার করা থাকলে ভূমিকা উপসর্গটিকে সম্মান করা দরকার।
দুর্ভাগ্যক্রমে, স্প্রিংয়ের ভূমিকা উপসর্গ কাস্টমাইজেশনটি কিছুটা হ্যাকি, অনেক স্থানে ডিফল্ট উপসর্গটি ROLE_
হার্ডকোডযুক্ত, তবে GrantedAuthorityDefaults
এটির পাশাপাশি, বসন্তের প্রেক্ষাপটে একটি শিমের প্রকারের পরীক্ষা করা হয় এবং এটি উপস্থিত থাকলে কাস্টম রোলটি উপসর্গ করে তোলে সম্মানিত হয়।
এই সমস্ত তথ্য একত্রিত করা, আরও ভাল ভূমিকা চেকার বাস্তবায়ন এরকম কিছু হবে:
@Component
public class RoleChecker {
@Autowired(required = false)
private GrantedAuthorityDefaults grantedAuthorityDefaults;
public boolean hasRole(String role) {
String rolePrefix = grantedAuthorityDefaults != null ? grantedAuthorityDefaults.getRolePrefix() : "ROLE_";
return Optional.ofNullable(SecurityContextHolder.getContext().getAuthentication())
.map(Authentication::getAuthorities)
.map(Collection::stream)
.orElse(Stream.empty())
.map(GrantedAuthority::getAuthority)
.map(authority -> rolePrefix + authority)
.anyMatch(role::equals);
}
}
SecurityContextHolderAwareRequestWrapper
উদাহরণ প্রয়োজন । আপনি কীভাবে এটি গ্রহণ করবেন এবং উত্তরটি নিজেই আরও কিছুটা স্পষ্ট করে তা ব্যাখ্যা করে আপনি এটি উন্নত করতে পারেন।