溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

跟我學(xué)習(xí)Spring Security--在線寵物商店開發(fā)(四)

發(fā)布時(shí)間:2020-07-21 19:38:21 來源:網(wǎng)絡(luò) 閱讀:792 作者:zangyanan2016 欄目:開發(fā)技術(shù)

   現(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í)間。





向AI問一下細(xì)節(jié)

免責(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)容。

AI