您好,登錄后才能下訂單哦!
現(xiàn)在我們來用Spring Security檢測(cè)一下登錄功能,添加在views下添加一個(gè)main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> 我已經(jīng)登錄進(jìn)來了! </body> </html>
在LoginController里添加登錄main的映射,這個(gè)方法說明請(qǐng)求main.do的時(shí)候,跳轉(zhuǎn)main
@RequestMapping(method=RequestMethod.GET,value="/main.do") public String toMain() { return "main"; }
我們知道前面登錄頁面的action請(qǐng)求為j_spring_security_check,因此我們要設(shè)置該請(qǐng)求應(yīng)該跳轉(zhuǎn)到哪里,因此我們需要在dogstore-security.xml添加<form-login default-target-url="/main.do" />
<http auto-config="true" use-expressions="true"> <intercept-url pattern="/login.do" access="permitAll"/> <intercept-url pattern="/*" access="hasRole('ROLE_USER')"/> <form-login default-target-url="/main.do" /> </http>
這樣如果登錄頁面發(fā)送請(qǐng)求,default-target-url默認(rèn)登錄成功后跳轉(zhuǎn)的url,還有其他屬性可以自己去查查,這樣我們用guest/guest登錄,就可以登錄進(jìn)main.jsp。
順便我們來說說Spring Security實(shí)現(xiàn)remember-me功能,修改dogstore-security.xml配置文件,添加<remember-me>聲明。設(shè)置key屬性為jbcpPetStore:
<http auto-config="true" use-expressions="true"> <intercept-url pattern="/login.do" access="permitAll"/> <intercept-url pattern="/*" access="hasRole('ROLE_USER')"/> <form-login default-target-url="/main.do" /> <remember-me key="jbcpPetStore"/> </http>
修改登錄頁面remember-me的checkbox框
<label> <input type="checkbox" id="_spring_security_remember_me" name="_spring_security_remember_me"> Remember me? </label>
當(dāng)我們?cè)俅蔚卿洉r(shí),如果Remember Me被選中,一個(gè)Remember Me的cookie將會(huì)設(shè)置在用戶的瀏覽器中。
如果用戶關(guān)閉瀏覽器并重新打開訪問一個(gè)JBCP Pets站點(diǎn)上需要認(rèn)證的頁面,他將不會(huì)再看到登錄頁了。請(qǐng)親自試一下——登錄并將Remember Me選項(xiàng)選中,收藏首頁,然后重啟瀏覽器并再次訪問首頁。你能發(fā)現(xiàn)你直接登錄成功并不再需要提供憑證。
Remember me功能設(shè)置了一個(gè)cookie在用戶的瀏覽器上,它包含一個(gè)Base64編碼的字符串,包含以下內(nèi)容:
用戶的名字;
過期的日期/時(shí)間;
一個(gè)MD5的散列值包括過期日期/時(shí)間、用戶名和密碼;
應(yīng)用的key值,是在<remember-me>元素的key屬性中定義的。
這些內(nèi)容將被組合成一個(gè)cookie的值存儲(chǔ)在瀏覽器中以備后用。
可以修改兩個(gè)常用的配置來改變r(jià)emember me功能的默認(rèn)行為:
屬性 | 描述 |
Key | 為remember mecookie定義一個(gè)唯一的key值,以與我們的應(yīng)用關(guān)聯(lián) |
token-validity-seconds | 定義時(shí)間的長(zhǎng)度(以秒計(jì))。Remember me的cookie將在將被視為認(rèn)證合法,并且也將用于設(shè)置cookie的過期時(shí)間。 |
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。