2017-04-22 6 views
1

J'essaie d'appliquer l'authentification dans la page index.jsp mais lorsque j'essaie de charger cette page, au lieu d'être redirigée vers la page login2.xhtml. Je reçois ceci sur la fenêtre chromée.JDBCRealm L'authentification basée sur le formulaire ne redirige pas vers la page de connexion

this is realm tag from servlet.xml

C'est de royaume ajouté dans 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"/> 

J'ai ajouté l'utilisateur dans tomcat-users.xml

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

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

et web.xml est:

<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> 

Ce sont des tables dans la base de données

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 a 1 avertissement mais aucune erreur.

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

Afficher le fichier catalina.log. – minus

Répondre

0

Je ne sais pas pourquoi, mais

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

ne fonctionnait pas, j'ai changé CONFIDENTIEL NONE et il a commencé à travailler.

-1

Si vous définissez un JDBCRealm vous devez définir votre table d'utilisateur dans le DB.

Vous devez définir votre utilisateur dans le tableau HR.users.

Vérifiez le fichier journal catalina pour plus d'informations.

+0

Je l'ai déjà défini –