كيفية إنشاء الشروط بناء على دور المستخدم باستخدام JSF / MyFaces؟
سؤال
ما الخيارات المتوفرة لدي لقراءة أدوار المستخدم الحالي من صفحات JSP الخاص بي؟ أنا على علم السمة visibleOnUserRole="myRole"
على مكونات توماهوك، ولكني في حاجة الأدوار لأمور أكثر قليلا تعقيدا من رؤية بسيطة.
المحلول
ExternalContext يعرض المستخدم و معلومات الدور.
public class RolesAccess implements Serializable {
public String getUserPrincipalName() {
FacesContext context = FacesContext.getCurrentInstance();
Principal principal = context.getExternalContext().getUserPrincipal();
if(principal == null) {
return null;
}
return principal.getName();
}
public String getUser() {
FacesContext context = FacesContext.getCurrentInstance();
return context.getExternalContext().getRemoteUser();
}
public boolean isManager() {
FacesContext context = FacesContext.getCurrentInstance();
return context.getExternalContext().isUserInRole("manager");
}
}
إذا كنت تستخدم للمساهمة في المشروع في السيرفلتس، خرائط هذه المعلومات إلى القيم التي كشفها في HttpServletRequest .
ويمكنك استخدام حبوب تمكن من فضح القيم إلى العرض عن طريق لغة التعبير .
<f:view>
<h:outputLabel value="#{rolesBean.userPrincipalName}" />
<h:outputLabel value="#{rolesBean.user}" />
<h:outputLabel value="#{rolesBean.manager}" />
</f:view>
نصائح أخرى
في جاوة EE 6 (التي لم تكن متوفرة عند سئل هذا السؤال / الإجابة)، يمكنك اختبار أدوار مباشرة من متغير request
في التعليمات البرمجية Facelets الخاص بك. هذا هو فائقة مريحة.
ومنها مثلا.
<h:outputText value="hi, admin!" rendered="#{request.isUserInRole('Admin')}" />
لا تنتمي إلى StackOverflow