2017-04-22 139 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

我已经定义了它 –

相关问题