2017-04-22 140 views
1

我想在index.jsp頁面中應用身份驗證,但是當我嘗試加載此頁面而不是重定向到login2.xhtml頁面。我在鍍鉻窗口得到這個。JDBCRealm基於身份驗證不重定向到登錄頁

this is realm tag from servlet.xml

這是在server.xml中添加的境界標籤

<Realm className="org.apache.catalina.realm.JDBCRealm" 

     driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
    connectionURL="jdbc:sqlserver://DESKTOP-ND3EINK\SQLEXPRESS;databaseName=HRSystem;user=ram;password=ram" 

     userTable="HR.users" userNameCol="user_name" userCredCol="user_pass" 
    userRoleTable="HR.user_roles" roleNameCol="role_name"/> 

我在Tomcat的users.xml中

<role rolename="tomcat"/> 
    <role rolename="HRPersonnel"/> 

    <user username="tomcat" password="tomcat" roles="tomcat"/> 
    <user username="[email protected]" password="111111" roles="HRPersonnel"/> 

和web.xml添加的用戶是:

<security-constraint> 

     <display-name>SecurityConstraint</display-name> 

     <web-resource-collection> 
      <web-resource-name>foo bar</web-resource-name> 
      <url-pattern>/index.jsp</url-pattern> 
<!-- 
      <http-method>GET</http-method> 
      <http-method>PUT</http-method> 
      <http-method>POST</http-method> 
      <http-method>DELETE</http-method> --> 

     </web-resource-collection> 

     <auth-constraint> 
      <role-name>HRPersonnel</role-name> 
     </auth-constraint> 

     <user-data-constraint> 
      <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
     </user-data-constraint> 

    </security-constraint> 


    <login-config> 
     <auth-method> FORM</auth-method> 
     <realm-name>org.apache.catalina.realm.JDBCRealm</realm-name> 
     <form-login-config> 
      <form-login-page>/login2.xhtml</form-login-page> 
      <form-error-page>/error.xhtml</form-error-page> 
     </form-login-config> 
    </login-config> 

這些是數據庫中的表格

create table HR.users(
name varchar(50), 
user_name varchar(50) primary key, 
user_pass varchar(50) not null, 
phone varchar (14), 
address varchar(100), 
) 

create table HR.user_roles (
    user_name   varchar(50) not null foreign key references HR.users(user_name), 
    role_name varchar(50) not null CHECK (role_name = 'Applicant' OR role_name = 'Manager' OR role_name = 'SME' or role_name = 'HRPersonnel') 

    primary key (user_name, role_name) 
); 

Catalina.log有1個警告但沒有錯誤。

22-Apr-2017 19:00:21.929 WARNING [main] org.apache.catalina.startup.ClassLoaderFactory.validateFile Problem with directory [C:\Program Files\Java\apache-tomcat-9.0.0.M13\bin\com.microsoft.sqlserver.jdbc.SQLServerDriver], exists: [false], isDirectory: [false], canRead: [false] 
+0

顯示catalina.log。 – minus

回答

0

我不知道爲什麼,但

<user-data-constraint> 
      <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
     </user-data-constraint> 

不工作,我改變CONFIDENTIAL爲NONE,並開始工作。

-1

如果你定義了一個JDBCRealm你必須在DB中定義你的用戶表。

您必須在HR.users表中定義您的用戶。

查看catalina日誌文件以獲取更多信息。

+0

我已經定義了它 –

相關問題