我正在嘗試創建一個應用程序,它允許用戶在登錄時只能訪問登錄頁面,並且無權訪問其他任何東西(減去資源)。登錄後,我希望他們在登出之前無法訪問登錄頁面,並可訪問所有其他頁面。目前,我的服務在我已經登錄時會記住我,但它仍然會讓我訪問登錄頁面。當我嘗試在登錄控制器上識別用戶時,身份驗證始終爲空。Spring Security - 能夠在初始重定向到主頁後返回登錄頁面
注意,我使用的是: Spring MVC的3 休眠4 的Groovy 2.1
這裏是我的登錄控制器:
@RequestMapping(method = RequestMethod.GET)
String login(Model model, @RequestParam(value="account", required=false) String account, @RequestParam(value="uuid", required=false) String uuid, @RequestParam(value="message", required=false) String message) {
addStatusAttribute(model, account, uuid, message)
model.addAttribute("newUser", new User())
Authentication auth = SecurityContextHolder.context.authentication
if (auth != null) {
logger.info(auth.name)
}
else {
logger.info(auth) // Always hits here
}
if (!(auth instanceof AnonymousAuthenticationToken) && auth != null) {
"forward:/home"
}
else {
"login"
}
這裏是我的安全配置:
<http auto-config="true">
<intercept-url pattern ="/login**" filters="none"/>
<intercept-url pattern="/static/**" filters="none" />
<intercept-url pattern="/**" access="ROLE_USER" />
<form-login login-page="/login" default-target-url="/home"
authentication-failure-url="/login?error=true"
always-use-default-target="true" />
<logout logout-success-url="/login" />
<remember-me data-source-ref="dataSource"
user-service-ref="myUserDetailsManager"
token-validity-seconds="864000"
key="skyfury_key"/>
</http>
我不要認爲這有什麼問題,但這裏是我的JSP表單:
<form method="POST" action="<c:url value="/j_spring_security_check" />">
<input type="text" name="j_username" placeholder="Email" />
<input type="password" name="j_password" placeholder="Password" />
<label for="j_remember">Remember Me</label>
<input id="j_remember" type='checkbox' name='_spring_security_remember_me' value="on" />
<input type="submit" value="Login" />
</form>
如果可以的話請幫忙!我一直盯着這太久了!謝謝:)
哦哇這實際上解決了我的問題!非常感謝!!!!!!!!!!!!!!!! – tomskytwo