كيفية إنشاء الشروط بناء على دور المستخدم باستخدام JSF / MyFaces؟

StackOverflow https://stackoverflow.com/questions/286686

سؤال

ما الخيارات المتوفرة لدي لقراءة أدوار المستخدم الحالي من صفحات 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')}" />
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top