SpringSecurity - jdbc-user-service nie działa poprawnie

0

Mam problem ze SpringSecurity. To mój kontroler:

@Secured({ "user", "administrator" })
@RequestMapping("/profile")
public String profile(HttpServletRequest request) {
return "profile";
}
Kiedy użyłam:

<authentication-manager> <authentication-provider> <user-service> <user name="user" password="user" authorities="user" /> </user-service> </authentication-provider> </authentication-manager> ,zalogowałam się jako user i poszłam do /profile, strona profile się wyświetlała. Ale kiedy użyłam: <authentication-manager> <authentication-provider> <jdbc-user-service data-source-ref="dataSource" users-by-username-query="SELECT LOGIN, PASSWORD, EMAIL FROM USER WHERE LOGIN=?" authorities-by-username-query="SELECT U.LOGIN, UT.NAME FROM USER U, USER_TYPE UT WHERE U.USER_TYPE_ID = UT.ID AND U.LOGIN =? " /> </authentication-provider> </authentication-manager> ,zalogowałam się do systemu jako user i poszłam do /profile, strona profile się nie wyświetliła (oczywiście najpierw się zarejestrowałam, zanim się zalogowałam). Kawałek skryptu mojej bazy danych:

CREATE TABLE USER_TYPE
(
ID SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(255) NOT NULL
);

CREATE TABLE USER
(
ID BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
EMAIL VARCHAR(255) NOT NULL,
LOGIN VARCHAR(255) NOT NULL,
PASSWORD VARCHAR(255) NOT NULL,
USER_TYPE_ID SMALLINT NOT NULL DEFAULT 2
);

ALTER TABLE USER
ADD CONSTRAINT USER_ID_USER_TYPE
foreign key(USER_TYPE_ID) REFERENCES USER_TYPE(ID) ON DELETE CASCADE;

INSERT INTO USER_TYPE VALUES(1, 'administrator');
INSERT INTO USER_TYPE VALUES(2, 'user');
Naprawdę nie wiem co robię źle. Proszę pomóżcie mi! Może to przez moją stronę do logowania? Kawałek kodu mojego kontrolera do logowania:

@RequestMapping("/postLogin")
public String postLogin(HttpServletRequest request, @ModelAttribute("userDto") @Valid UserDTO userDto,
BindingResult result) throws Exception {
HttpSession session = request.getSession();
UserEntity user = dao.findByLoginAndPassword(userDto.getLogin(), SHA1Encoder.getEncodeWord(userDto.getPassword()));
session.setAttribute("User", user);
return "redirect:/home";
}

@RequestMapping("/")
public String welcome(Model model, HttpServletRequest request) {
    UserDTO user = new UserDTO();
    model.addAttribute("userDto", user);
    return "index";
}

Mój kawałek strony index.jsp:

<form:form action="/Webapp/postLogin" method="POST"
modelAttribute="userDto">

<form:input type="text" path="login" value=""
placeholder="Login" />

<form:input type="password" path="password" value=""
placeholder="Password" />
<input type="submit" value="Log in" name="submit" />

</form:form>
Mój kawałek security-context.xml:</p> <http auto-config="true" use-expressions="true"> <form-login login-page="/" default-target-url="/home" authentication-failure-url="/?error=1" username-parameter="login" password-parameter="password" /> <logout logout-success-url="/signUp" /> <csrf /> </http>

Sformatowany topic na stackoverflow: http://stackoverflow.com/questions/37334908/jdbc-user-service-not-working-properly

0

Jak chcesz pomocy, to weź co co masz wrzuć na gita, w takim przypadku ktoś robi git clone tralallalala i może odpalić to twoje cudo.
Pierwsze z brzegu, baza nie ma pola enabled dla tabeli User

1 użytkowników online, w tym zalogowanych: 0, gości: 1