2014-09-03 118 views
0

我有一个包含电子邮件地址和密码的登录页面。我如何使用spring security来进行安全登录?我不明白该怎么做..?在我的Web应用程序中,第一页是带有userEmail和Password的登录页面。如何在登录表单中添加弹簧安全

这是我的jsp页面

<form:form action="/pname/signin" modelAttribute="user" method="post" id="form" > 
    <form:input path="userEmailId" placeholder="User Name" /> 
    <form:password path="userPassword" placeholder="Password" /> 
    <a href="signin" class="anchorStyle"><input type="submit" value="signin"/> </a> 
</form:form> 

,这里是我的弹簧security.xml文件

<http auto-config="true"> 
    <intercept-url pattern="/**" access="ROLE_ADMIN" /> 
    <logout logout-success-url="/signin?logout" /> 
</http> 

<authentication-manager> 
    <authentication-provider> 
    <user-service> 
     <user name="user" password="password" authorities="ROLE_ADMIN" /> 
    </user-service> 
    </authentication-provider> 
</authentication-manager> 

请告诉我,我的错误是。成功登录后,它也应该进入hello页面。

+0

你可以添加显示表单的JSP吗? – Jeroen 2014-09-03 10:03:58

+0

@ Jeroen..i增加了它..请告诉我..我使用json为此.. – ghhhhhhhh 2014-09-03 10:25:41

+0

你能描述什么不工作?你到达登录页面吗?尝试进行身份验证时是否会遇到任何异常? – Jeroen 2014-09-03 11:19:57

回答

0

This tutorial应该让你去。从可用信息中,仍然很难找出配置中缺少的内容。本教程解释了如何限制访问除登录页面以外的每个页面。它还显示了在成功登录后如何转发到目标页面。例如,见此http配置:

<http use-expressions="true"> 
    <intercept-url pattern="/login*" access="isAnonymous()" /> 
    <intercept-url pattern="/**" access="isAuthenticated()"/> 

    <form-login 
    login-page='/login.html' 
    default-target-url="/homepage.html" 
    authentication-failure-url="/login.html?error=true" /> 

    <logout logout-success-url="/login.html" /> 

</http> 
+0

我使用json ..那么春季安全会如何知道我正确的用户名和密码? – ghhhhhhhh 2014-09-03 12:01:33

1

This tutorial,并且this tutorial可以帮助你。您基本上定义了在后台检查必要的信息,如.xml文件中的userEmail和userPassword。

之后,在你的的.jsp文件,你给的网址值j_spring_security_check匹配了您的电子邮件参数您的密码,也授权,以查看该用户是否具有授权打开您在Web应用程序中提供的某些页面。

见这个例子来启发你: 这是的.jsp视图页面:

<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"> 
       <c:if test="${not empty error}"> 
        <div class="error" style="color: #ff0000;">${error}</div> 
       </c:if> 
       <div class="form-group"> 
        <label for="userEmail">E-Posta</label> 
        <input id="userEmail" type="email" class="form-control" name="userEmail" placeholder="E-Mail Here!" required> 
       </div> 

       <div class="form-group"> 
        <label for="userPassword">Şifre</label> 
        <input id="userPassword" type="password" class="form-control" name="userPassword" placeholder="Give me your Password!" required> 
       </div> 

       <div class="form-group"> 
        <button type="submit" class="btn btn-send-message pull-right">GİRİŞ</button> 
       </div> 

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

这是的security.xml文件:

<security:http auto-config="true"> 
    <security:intercept-url pattern="/addPost/**" access="ROLE_USER"/> 
    <security:form-login 
     login-page="/login" 
     default-target-url="/addPost/" 
     authentication-failure-url="/login?error" 
     username-parameter="userEmail" 
     password-parameter="userPassword" /> 
    <security:logout logout-success-url="/login?logout" /> 
</security:http> 

<security:authentication-manager> 
    <security:authentication-provider> 
     <security:jdbc-user-service data-source-ref="dataSource" 
            authorities-by-username-query="SELECT userEmail, authority FROM AUTHORITIES WHERE userEmail = ?" 
            users-by-username-query="SELECT userEmail, userPassword, isActive FROM USERS WHERE userEmail = ?" 
     /> 
    </security:authentication-provider> 
</security:authentication-manager> 

至于我能从您的代码中查看,您没有添加任何j_spring_security_check作为值.jsp视图。所以你的代码不知道去哪里比赛的凭据。同时我也相信你应该将表单登录添加到您的.xml文件中,以指导您的登录过程。

希望这对你有帮助。