Wyświetlanie komunikatu po nieudanej próbie logowania.

Odpowiedz Nowy wątek
2015-03-15 17:22
0

Witam. Mam problem z wyświetlaniem komunikatu o błędnym logowaniu do systemu. Jest to aplikacja napisana w Spring z użyciem Spring Security.

Metoda w kontrolerze:

    @RequestMapping("/login")
    public ModelAndView getLoginForm(
            @RequestParam(value="authfailed", required = false) String authfailed,
            @RequestParam(value="logout", required = false) String logout,
            @RequestParam(value="denied", required = false) String denied) {
        ModelAndView mav = new ModelAndView();
        if (authfailed != null) {
            mav.addObject("authfailed", "Błędna nazwa użytkownika lub hasło");
        } else if (logout != null) {
            mav.addObject("logout", "Wylogowano");
        } else if (denied != null) {
            mav.addObject("denied", "Odmowa dostępu");
        }
        mav.setViewName("login");
        return mav;
    } 

Konfiguracja Spring Security:

    <security:http>
        <security:intercept-url pattern="/client**"
            access="ROLE_CLIENT" />
        <security:intercept-url pattern="/admin**"
            access="ROLE_ADMIN" />
        <security:form-login login-page='/login'
            username-parameter="username" password-parameter="password"
            authentication-failure-url="/login?authfailed"
            authentication-success-handler-ref="myAuthenticationSuccessHandler" />
        <security:logout logout-success-url="/login?logout" />
    </security:http> 

Strona z formularzem logowania:

    <#if authfailed??>
        <div class="errorMessage">${authfailed}</div>
    </#if>
    <div id="login">
        <h1>Logowanie</h1>
        <form method="post" action="<@spring.url '/j_spring_security_check' />">
            <input type="text" name="username" placeholder="Login" /> <input
                type="password" name="password" placeholder="Hasło" /> <input
                type="submit" value="Login" />
        </form>
    </div> 

Wszystko działa, ok jak się zaloguje to przenosi mnie na odpowiednią stronę, ale kiedy wprowadzę błędne dane to fakt w adresie pojawia się adres

http://localhost:8181/ibank/login?authfailed 

ale nie wyświetla się żaden komunikat. Przecież dodawany jest komunikat do zmiennej authfailed, ale nic nie jest wyświetlane. Starałem się wzorować na tym: http://www.mkyong.com/spring-[...]ogin-form-annotation-example/ a tam wszystko działa poprawnie.

Pozostało 580 znaków

2015-03-20 03:59
1

Najpierw upewnij się, że w controllerze jest wszystko ok. Tak na szybko można zrobić po prostu (tak wiem bardziej poprawne byłoby użycie jakiegoś logger):


System.out.pritnln("\n\n authfailed is null: " + (authfield==null))

Lub zrób sobie inny prosty test:


    <div id="login">
        <h1>Logowanie</h1>
        <form method="post" action="<@spring.url '/j_spring_security_check' />">
            <input type="text" name="username" placeholder="Login" /> <input
                type="password" name="password" placeholder="Hasło" /> <input
                type="submit" value="Login" />
        </form>
    </div> 

        <div class="errorMessage">${authfailed}</div>

Na początku będziesz miał prawdopodobnie freemarker error, ale po zalogowaniu z błędnymi danymi już powinno go nie być.

Pozostało 580 znaków

2015-03-21 09:07

Poradziłem sobie z tym w inny sposób, ale dzięki za próbę pomocy.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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