Когда я пытаюсь войти в систему на моем login.jsp
, возникает эта ошибка, я настроил все, и я также скопировал версию glassfish с существующей конфигурацией для входа в систему, я только изменил ее, и у меня все еще есть эта ошибка.Я посмотрел на множество вопросов и попробовал пару из них, но это не сработало, и все они довольно устарели.
WEB9102: Web Login Failed: com.sun.enterprise.security.auth.login.common.LoginException: Login failed: Security Exception
Моя jdbcRealm
конфигурация:
JAAS Context: jdbcRealm
JNDI: jdbc/Plinko
User Table: users
User Name Column: username
Password Column: password
Group Table: users_groups
Group Name Column: groupname
Password Encryption Algorithm: SHA-256
Digest Algorithm: SHA-256
Encoding: Base64
Charset: UTF-8
Мой web.xml
файл:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<security-constraint>
<web-resource-collection>
<web-resource-name>User Rights</web-resource-name>
<url-pattern>/home.html</url-pattern>
<url-pattern>/services/general/getBuildings</url-pattern>
<url-pattern>/services/general/getSensorTypes</url-pattern>
<url-pattern>/services/general/getSensors</url-pattern>
<url-pattern>/services/file/getFileLinks</url-pattern>
<url-pattern>/services/general/getNotes</url-pattern>
<url-pattern>/services/general/getAllNotifications</url-pattern>
<url-pattern>/services/general/getCalibrationNotis</url-pattern>
<url-pattern>/services/general/getChangeNotis</url-pattern>
<url-pattern>/services/general/checkCacheVersion</url-pattern>
<url-pattern>/services/general/checkIfSessionValid</url-pattern>
<url-pattern>/services/auth/checkUser</url-pattern>
<url-pattern>/services/general/searchBySerial</url-pattern>
</web-resource-collection>
<web-resource-collection>
<web-resource-name>Admin Rights</web-resource-name>
<url-pattern>/home.html</url-pattern>
<url-pattern>/services/*</url-pattern>
</web-resource-collection>
<web-resource-collection>
<web-resource-name>Super Rights</web-resource-name>
<url-pattern>/home.html</url-pattern>
<url-pattern>/services/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>User</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<role-name>User</role-name>
</security-role>
<security-role>
<role-name>Admin</role-name>
</security-role>
<security-role>
<role-name>Super</role-name>
</security-role>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>jdbcRealm</realm-name>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/loginError.html</form-error-page>
</form-login-config>
</login-config>
<filter>
<description>Set cache expiry for static content</description>
<filter-name>ExpiresFilter</filter-name>
<filter-class>com.zarja.resource.ExpiresFilter</filter-class>
<init-param>
<description>Add an Expires Header</description>
<param-name>days</param-name>
<param-value>365</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ExpiresFilter</filter-name>
<url-pattern>/images/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<session-config>
<session-timeout>0</session-timeout>
</session-config>
</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="">
<context-root>/PlinkoR</context-root>
<security-role-mapping>
<role-name>Admin</role-name>
<group-name>Admin</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>User</role-name>
<group-name>User</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>Super</role-name>
<group-name>Super</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>
Мой login.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Plinko</title>
<link rel="icon" href="favicon.ico">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready(() => {
$.ajax({
type: "GET",
url: "services/general/checkCacheVersion",
success: (data) => {
console.log(data);
if (data.split(";")[0] === "OK") {
setCookie("cacheVersion", data.split(";")[1] + "", 3650);
}
},
error: (e) => {
console.log(e);
}
});
});
</script>
<main class="main">
<div id="particles-js"></div>
<script src="js/login/particles.min.js"></script>
<script src="js/login/particle-app.js"></script>
<div class="overlay">
<div class="form-div">
<form id="submitForm">
<table>
<tr class="wrong-credentials"><td colspan="2" id="lang-wrong-credentials">Napačni podatki</td></tr>
<tr class="left"><td class="first" colspan="2"></td></tr>
<tr><td colspan="2"><input type="text" name="j_username" id="inputUser" placeholder="Uporabniško ime"></td></tr>
<tr class="left"><td class="first" colspan="2"></td></tr>
<tr><td colspan="2"><input type="password" name="j_password" id="inputPass" placeholder="Geslo"></td></tr>
<tr id="submit-tr"><td colspan="2"><input type="submit" class="button-tool" value="Prijava" id="submitLogin"></tr>
</table>
</form>
</div>
</div>
</main>
</body>
</html>
<script type="text/javascript">
var wrongCredentials = false;
$(document).ready(() => {
$("#submitForm").submit((e) => {
var loginOk = false;
e.preventDefault();
$.ajax({
type: "POST",
url: "j_security_check",
data: {
j_username: $("#inputUser").val(),
j_password: $("#inputPassword").val()
},
success: function(data) {
console.log(data);
if (data === undefined || data.indexOf("<title>Plinko Login Error</title>") === -1)
loginOk = true;
else
loginOk = false;
},
error: function(e) {
console.log(e);
},
complete: function() {
$.ajax({
type: "GET",
url: "services/general/login?username=" + $("#inputUser").val() + "&success=" + loginOk,
complete: function(e) {
console.log(e);
if (loginOk) {
if (wrongCredentials)
location.href = "index.html";
else
location.reload(true);
} else {
$(".wrong-credentials").show();
}
}
});
}
});
});
});
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toGMTString();
document.cookie = cname + "=" + cvalue + "; " + expires;
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) === ' ') {
c = c.substring(1);
}
if (c.indexOf(name) === 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
</script>