Spring Security - strona logowania

Odpowiedz Nowy wątek
2016-03-04 16:59
0

Witam,
mam taki problem podczas logowania przy uzyciu Spring Security:
wszystko działa poprawnie przy domyślnej stronie widoku logowania, ale gdy próbuje dodać własny login.jsp wyskakuje bład.
Mógłby mi ktoś pomóc ?

HomeController.java

@Controller
public class HomeController {

    @RequestMapping("/")
    public String welcome(Model model) {
        model.addAttribute("greeting", "Witaj w sklepie internetowym!");
        model.addAttribute("tagline", "Wyjątkowym i jedynym sklepie internetowym");
        return "welcome";
    }

    @RequestMapping(value = "/admin**", method = RequestMethod.GET)
    public ModelAndView adminPage() {

        ModelAndView model = new ModelAndView();
        model.addObject("title", "Spring Security Login Form - Database Authentication");
        model.addObject("message", "This page is for ROLE_ADMIN only!");
        model.setViewName("admin");

        return model;

    }

    @RequestMapping(value = "/login", method = RequestMethod.GET)
    public ModelAndView login(@RequestParam(value = "error", required = false) String error,
            @RequestParam(value = "logout", required = false) String logout) {

        ModelAndView model = new ModelAndView();
        if (error != null) {
            model.addObject("error", "Invalid username and password!");
        }

        if (logout != null) {
            model.addObject("msg", "You've been logged out successfully.");
        }
        model.setViewName("login");

        return model;

    }}

Login.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>Login Page</title>
<style>
.error {
    padding: 15px;
    margin-bottom: 20px;
    border: 1px solid transparent;
    border-radius: 4px;
    color: #a94442;
    background-color: #f2dede;
    border-color: #ebccd1;
}

.msg {
    padding: 15px;
    margin-bottom: 20px;
    border: 1px solid transparent;
    border-radius: 4px;
    color: #31708f;
    background-color: #d9edf7;
    border-color: #bce8f1;
}

#login-box {
    width: 300px;
    padding: 20px;
    margin: 100px auto;
    background: #fff;
    -webkit-border-radius: 2px;
    -moz-border-radius: 2px;
    border: 1px solid #000;
}
</style>
</head>
<body onload='document.loginForm.username.focus();'>

    <h1>Spring Security Custom Login Form (Annotation)</h1>

    <div id="login-box">

        <h2>Login with Username and Password</h2>

        <c:if test="${not empty error}">
            <div class="error">${error}</div>
        </c:if>
        <c:if test="${not empty msg}">
            <div class="msg">${msg}</div>
        </c:if>

        <form name='loginForm'
            action="<c:url value='j_spring_security_check' />" method='POST'>

            <table>
            <tr>
                <td>User:</td>
                <td><input type='text' name='user' value=''></td>
            </tr>
            <tr>
                <td>Password:</td>
                <td><input type='password' name='pass' /></td>
            </tr>
            <tr>
                    <td colspan='2'>
                                <input name="submit" type="submit" value="submit" />
                                </td>
            </tr>
           </table>

           <input type="hidden" 
                     name="${_csrf.parameterName}" value="${_csrf.token}" />
        </form>
    </div>

</body>
</html>

Admin.jsp

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@page session="true"%>
<html>
<body>
    <h1>Title : ${title}</h1>
    <h1>Message : ${message}</h1>

    <c:url value="/j_spring_security_logout" var="logoutUrl" />

        <!-- csrt support -->
    <form action="${logoutUrl}" method="post" id="logoutForm">
        <input type="hidden" 
            name="${_csrf.parameterName}"
            value="${_csrf.token}" />
    </form>

    <script>
        function formSubmit() {
            document.getElementById("logoutForm").submit();
        }
    </script>
</body>
</html>

DispatcherSeervlet-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
    <mvc:annotation-driven />

    <mvc:annotation-driven enable-matrix-variables="true" />

    <context:component-scan base-package="com.packt.webstore" />

    <!-- <resources mapping="/resources/**" location="/resources/" /> -->

    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/" />
        <property name="suffix" value=".jsp" />
    </bean>  

    <bean id="messageSource"
        class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="classpath:messages" />
        <property name="defaultEncoding" value="UTF-8" />
    </bean>

    <bean id="localeResolver"
        class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
        <property name="defaultLocale" value="en" />
    </bean>

</beans>

SecurityConfig.java

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    DataSource dataSource;

    @Autowired
    public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception {
        auth.jdbcAuthentication().dataSource(dataSource)
                .usersByUsernameQuery("select Name,Password, Enabled from user where Name=?")
                .authoritiesByUsernameQuery("select Name, Role from user_Role where Name=?");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/admin").access("hasRole('ROLE_ADMIN')").and().formLogin()
                .loginPage("/login").and().csrf();
//      // http.csrf().disable();
    }
}
edytowany 1x, ostatnio: janiu, 2016-03-04 17:41

Pozostało 580 znaków

2016-03-04 17:29
0

A jaki blad?

Pozostało 580 znaków

2016-03-04 17:42
0
WARNING: No mapping found for HTTP request with URI [/webstore/j_spring_security_check] in DispatcherServlet with name 'DispatcherServlet'

Pozostało 580 znaków

2016-03-04 21:52
0

Spróbuj dodać przed /j_spring_security_check ${request.contextPath}

Pozostało 580 znaków

2016-03-04 23:00
0

nic to nie dało, adres URL tez sie nie zmienil tak jakby "${request.contextPath}" było puste

Pozostało 580 znaków

2016-03-11 19:07
0

ktos moze ma jakiś inny pomysł ?

Pozostało 580 znaków

2016-03-11 23:26
0

W springu 4 defaultowy url do logowania został zmieniony z 'j_spring_security_check' na 'login', podmień w jsp i spróbuj ;)

Pozostało 580 znaków

2016-03-13 02:34
0

Też parę dni temu się z tym męczyłem. Mi pomogło dodanie linijki w <form-login> w konfiguracji spring security:

login-processing-url="/j_spring_security_check"

Pozostało 580 znaków

2016-03-14 16:13
0

podmieniłem 'j_spring_security_check' na 'login' i błąd już nie leci, ale teraz nie da się zalogować, cały czas wyskakuje, że błedny login lub hasło.
W domyślnej stronie logowania nie ma takiego problemu

Pozostało 580 znaków

2016-03-15 10:22
0

Głowy nie dam, ale tutaj prawdopodobnie też leży problem:

<tr>
                <td>User:</td>
                <td><input type='text' name='user' value=''></td>
            </tr>
            <tr>
                <td>Password:</td>
                <td><input type='password' name='pass' /></td>
            </tr>

Defaultowy name pola z nazwą użytkownika to 'username', natomiast z hasłem 'password'.. u Ciebie są inne. Podmień i spróbuj.

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