2012-02-19 17 views
5

Netbeans kullanarak Java EE6 ve GlassFish3 hakkında bulduğum güzel bir kılavuz kullanarak bir giriş sayfası oluşturdum. Oturum açma sayfasına ulaşmaya çalıştığımda projeyi dağıttıktan sonra 'HTTP Durum 403 - İstenen kaynağa erişim reddedildi' GlassFish3 sunucusundan.HTTP Durum 403 uygulanan bir giriş sayfasına ulaşmaya çalışırken cambalığı 3 hatası 3

Kullanmakta olduğum url: http://localhost:9999/simplewebapp/admin/admin.jsp Kılavuz, oluşturduğum giriş sayfasına otomatik olarak yönlendirilmem gerektiğini söylüyor. Yukarıdaki hatayı alıyorum yerine

. Glassfish3 günlüğüne bakıyorum Yukarıdaki URL'ye girdiğimde bu iki satırı alıyorum.

BİLGİ: JACC Politikası Sağlayıcı: Başarısız İzin Kontrolü: bağlam ("simplewebapp/simplewebapp ") izni ("(javax.security.jacc.WebUserDataPermission /admin/login.jsp GET)") BİLGİ: JACC Politikası Sağlayıcı : Başarısız izin Kontrolü: bağlam ("simplewebapp/simplewebapp ") izni ("(javax.security.jacc.WebUserDataPermission GET /admin/login.jsp: GİZLİ)")

Bazı daha fazla ayrıntı:

web .xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <security-constraint> 
     <display-name>Admin Pages</display-name> 
     <web-resource-collection> 
      <web-resource-name>Administrative Pages</web-resource-name> 
      <description/> 
      <url-pattern>/admin/*</url-pattern> 
     </web-resource-collection> 
     <auth-constraint> 
      <description>admin</description> 
     </auth-constraint> 
    </security-constraint> 
    <login-config> 
     <auth-method>FORM</auth-method> 
     <realm-name>file</realm-name> 
     <form-login-config> 
      <form-login-page>/login.jsp</form-login-page> 
      <form-error-page>/loginerror.jsp</form-error-page> 
     </form-login-config> 
    </login-config> 
    <security-role> 
     <description>Administrators</description> 
     <role-name>admin</role-name> 
    </security-role> 
    <security-role> 
     <description>Users</description> 
     <role-name>user</role-name> 
    </security-role> 
</web-app> 

glassfish-web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd"> 
<glassfish-web-app error-url=""> 
    <security-role-mapping> 
    <role-name>admin</role-name> 
    <group-name>appadmin</group-name> 
    </security-role-mapping> 
    <class-loader delegate="true"/> 
    <jsp-config> 
    <property name="keepgenerated" value="true"> 
     <description>Keep a copy of the generated servlet class' java code.</description> 
    </property> 
    </jsp-config> 
</glassfish-web-app> 

yanlış burada ne yapıyorum? Teşekkür ederiz.

+0

Yönetici klasörü içinde login.jsp bulmaya çalışıyor mu? – skiabox

+0

Benim login.jsp dosyası, indirdiğim kitap kodu gibi uygulamanın kök dizinindedir. – skiabox

cevap

3

Sorun çözüldü. Glassfish-web.xml dosyasında asıl adlar ve web.xml içinde bir rol ismi eklemek zorundaydım. Doğru dosyalar:

web xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <security-constraint> 
     <display-name>Admin Pages</display-name> 
     <web-resource-collection> 
      <web-resource-name>Administrative Pages</web-resource-name> 
      <description/> 
      <url-pattern>/admin/*</url-pattern> 
     </web-resource-collection> 
     <auth-constraint> 
      <description>admin</description> 
      <role-name>AdminRole</role-name> 
     </auth-constraint> 
    </security-constraint> 
    <login-config> 
     <auth-method>FORM</auth-method> 
     <realm-name>file</realm-name> 
     <form-login-config> 
      <form-login-page>/login.jsp</form-login-page> 
      <form-error-page>/loginerror.jsp</form-error-page> 
     </form-login-config> 
    </login-config> 
    <security-role> 
     <description>Administrators</description> 
     <role-name>AdminRole</role-name> 
    </security-role> 
    <security-role> 
     <description>Users</description> 
     <role-name>UserRole</role-name> 
    </security-role> 
</web-app> 

glassfish-web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd"> 
<glassfish-web-app error-url=""> 
    <security-role-mapping> 
    <role-name>AdminRole</role-name> 
    <principal-name>admin</principal-name> 
    <group-name>appadmin</group-name> 
    </security-role-mapping> 
    <security-role-mapping> 
    <role-name>UserRole</role-name> 
    <principal-name>user</principal-name> 
    <group-name>appuser</group-name> 
    </security-role-mapping> 
    <class-loader delegate="true"/> 
    <jsp-config> 
    <property name="keepgenerated" value="true"> 
     <description>Keep a copy of the generated servlet class' java code.</description> 
    </property> 
    </jsp-config> 
</glassfish-web-app> 
+0

Ayrıca camböceği böcek dikkat edin: http://java.net/jira/browse/GLASSFISH-19064. Bakınız: http://stackoverflow.com/questions/12268255 – igr

0

bu benim için çalıştı glassfish Yönetici Konsolu kullanma: listelenmiş

Seç 'sunucu config' Yapılandırmalar altında ve Güvenlik sayfasına erişin. Bu sayfada ‘Varsayılan İlkeyi Rol Eşleştirmeye’ seçeneğini etkinleştirmeniz gerekiyor. Bu seçeneği etkinleştirmenin yararı, olmadan, kullanıcılar için tanımlanan rolleri, projemiz için bir glassfish yapılandırma dosyasında resmi XML bildirimleri yapmamızı gerektiren otomatik olarak kullanabilmemizdir.

0

"Standart" olarak kalması için bunun daha iyi bir seçenek olduğunu düşünüyorum, çünkü sadece bir web kapsayıcısı (örn. Tomcat) kullanıyorsanız, yalnızca bir alem olan hiçbir şeyi yapılandırmanız gerekmeyecektir. Benim durumumda, Eclipse kullanıyordum ve projeyi kaldırmak ve yeniden dağıtmak zorunda kaldım.

Çok teşekkür ederim.