我有一个包含电子邮件地址和密码的登录页面。如何使用spring security进行安全登录。我不明白怎么做..?在我的网络应用程序中,第一页是带有userEmail和密码的登录页面。
这是我的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>
这是我的spring-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>
请告诉我我的错误在哪里。成功登录后,也应该进入问候页面。
答案 0 :(得分:1)
This tutorial,this tutorial可以为您提供帮助。您基本上定义了要在后台检查的必要信息,例如 .xml 文件中的userEmail和userPassword。
之后,在 .jsp 文件中,您将网址值设为 j_spring_security_check ,以便将您的密码与您的电子邮件参数进行匹配,以及授权,查看该用户是否具有打开您在网络应用中提供的某些网页的授权。
请参阅此示例以启发您: 这是 .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 文件中,以便为您的登录过程提供说明。
希望这对你有所帮助。
答案 1 :(得分: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>