2012-02-19 25 views
5

Tôi đã tạo trang đăng nhập bằng hướng dẫn hay mà tôi tìm thấy về Java EE6 và GlassFish3 bằng cách sử dụng netbeans. Sau khi triển khai dự án khi tôi cố gắng truy cập trang đăng nhập, tôi nhận được 'Trạng thái HTTP 403 - Truy cập tài nguyên được yêu cầu đã bị từ chối' từ máy chủ GlassFish3.Lỗi trạng thái HTTP 403 từ glassfish 3 khi cố gắng truy cập trang đăng nhập được thực hiện

Url tôi đang sử dụng là: http://localhost:9999/simplewebapp/admin/admin.jsp Hướng dẫn nói rằng tôi sẽ tự động được chuyển hướng đến trang đăng nhập mà tôi đã tạo.

Thay vào đó tôi nhận được lỗi ở trên. Nhìn vào bản ghi glassfish3 tôi nhận được hai dòng này khi tôi nhập url trên.

THÔNG TIN: Nhà cung cấp chính sách JACC: Không cho phép Kiểm tra: ngữ cảnh ("simplewebapp/simplewebapp"), quyền ("(javax.security.jacc.WebUserDataPermission /admin/login.jsp GET)") THÔNG TIN: Nhà cung cấp chính sách JACC : Không Permission Kiểm tra: ngữ cảnh ("simplewebapp/simplewebapp "), cho phép ("(javax.security.jacc.WebUserDataPermission /admin/login.jsp GET: BẢO MẬT)")

Một số chi tiết:

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> 

Tôi đang làm gì sai ở đây? Cảm ơn bạn.

+0

Google có cố gắng tìm login.jsp bên trong thư mục quản trị không? – skiabox

+0

Tệp login.jsp của tôi nằm ở thư mục gốc của ứng dụng giống như mã sách tôi đã tải xuống. – skiabox

Trả lời

3

Sự cố đã được giải quyết.Tôi đã thêm tên chính trong glassfish-web.xml và tên vai trò trong web.xml. file Đúng:

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

Cũng lưu ý lỗi thủy tinh: http://java.net/jira/browse/GLASSFISH-19064. Xem: http://stackoverflow.com/questions/12268255 – igr

0

Sử dụng glassfish Admin Console này làm việc cho tôi:

Chọn 'server-config' niêm yết trong Cấu hình và truy cập trang Bảo mật. Trên trang đó bạn cần bật tùy chọn ‘Mặc định chính cho vai trò lập bản đồ vai trò’. Lợi ích của việc kích hoạt tùy chọn này là nó cho phép chúng ta sử dụng các vai trò được định nghĩa cho người dùng một cách nhanh chóng mà không cần yêu cầu chúng ta khai báo XML chính thức trong tệp cấu hình glassfish cho dự án của chúng ta.

0

Để giữ nó "chuẩn", tôi nghĩ đây là lựa chọn tốt hơn, bởi vì nếu bạn chỉ sử dụng một thùng chứa web (ví dụ tomcat), bạn sẽ không phải cấu hình gì khác chỉ là một lĩnh vực. Trong trường hợp của tôi, tôi đã sử dụng Eclipse và phải hủy triển khai dự án và triển khai lại nó.

Cảm ơn bạn rất nhiều.

Các vấn đề liên quan