亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring security如何實(shí)現(xiàn)記錄用戶(hù)登錄時(shí)間功能

 更新時(shí)間:2020年03月09日 11:59:23   作者:程序曉猿  
這篇文章主要介紹了Spring security如何實(shí)現(xiàn)記錄用戶(hù)登錄時(shí)間功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一、原理分析

spring security提供了一個(gè)接口 AuthenticationSuccessHandler,該接口中只有一個(gè)方法,用來(lái)進(jìn)行登錄成功后的操作

public interface AuthenticationSuccessHandler {

  /**
   * Called when a user has been successfully authenticated.
   *
   * @param request the request which caused the successful authentication
   * @param response the response
   * @param authentication the <tt>Authentication</tt> object which was created during
   * the authentication process.
   */
  void onAuthenticationSuccess(HttpServletRequest request,
      HttpServletResponse response, Authentication authentication)
      throws IOException, ServletException;
}

我們可以通過(guò)實(shí)現(xiàn)該接口來(lái)自定義登錄成功后的操作,但spring security提供了一個(gè)SavedRequestAwareAuthenticationSuccessHandler實(shí)現(xiàn)類(lèi),這個(gè)實(shí)現(xiàn)類(lèi)可以記住用戶(hù)未登錄前要訪問(wèn)的地址,這樣登錄成功后就可以把用戶(hù)再跳轉(zhuǎn)到他想去的頁(yè)面。所以我們一般使用繼承這個(gè)類(lèi)的方式來(lái)實(shí)現(xiàn)自定義登錄后續(xù)操作的功能。

二、實(shí)現(xiàn)方式

2.1 自定義AuthenticationSuccessHandler實(shí)現(xiàn)類(lèi)

自定義AuthenticationSuccessHandler接口的實(shí)現(xiàn)類(lèi),繼承SavedRequestAwareAuthenticationSuccessHandler類(lèi),并加入到spring容器中

@Component("loginSuccessHandler")
public class LoginSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler {

  @Autowired
  private IUserDao userDao;
  public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
    //記錄相關(guān)的用戶(hù)信息,如上次登錄時(shí)間
    String name = authentication.getName();
    userDao.updateLastLonginTime(System.currentTimeMillis(),name);

    //調(diào)用父類(lèi)的方法把用戶(hù)引導(dǎo)到未登錄前要去的頁(yè)面
    super.onAuthenticationSuccess(request,response,authentication);
  }
}

其中remember-me-parameter="remembermeParamater"指定前臺(tái)傳遞的是否rememberme的參數(shù)名,前臺(tái)要傳遞的參數(shù)值是true或false

2.2 在spring-security的配置文件中指定自定義的AuthenticationSuccessHandler

<!--自定義登錄頁(yè)面-->
    <security:form-login login-page="/login.html" login-processing-url="/login"
               username-parameter="username" password-parameter="password"
               authentication-failure-forward-url="/failed.html"
               default-target-url="/index.html"
               authentication-success-handler-ref="loginSuccessHandler"

    />

實(shí)例上就是在定義自定義登錄頁(yè)面的標(biāo)簽內(nèi)指定authentication-success-handler-ref="loginSuccessHandler",其中l(wèi)oginSuccessHandler是自定義的這個(gè)bean在容器中的名稱(chēng)

2.3 測(cè)試

啟動(dòng)工程,進(jìn)行登錄,登錄成功后會(huì)更新用戶(hù)表中的last_login_time字段。

需要注意的是如果是通過(guò)readme進(jìn)行的登錄,不會(huì)更新當(dāng)前用戶(hù)的登錄時(shí)間,只有通過(guò)賬號(hào)密碼登錄時(shí)才會(huì)進(jìn)行更新,也就是只有這時(shí)才會(huì)執(zhí)行這個(gè)onAuthenticationSuccess方法

三、總結(jié)

在用戶(hù)登錄成功后記錄本次登錄相關(guān)的信息,需要繼承spring-security提供的SavedRequestAwareAuthenticationSuccessHandler類(lèi),重寫(xiě)其中的onAuthenticationSuccess方法,在其中進(jìn)行記錄用戶(hù)信息的操作,在方法的最后調(diào)用父類(lèi)的方法把用戶(hù)引導(dǎo)到未登錄前要去的頁(yè)面。

測(cè)試工程代碼的地址:工程示例

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決response.setHeader設(shè)置下載文件名無(wú)效的問(wèn)題

    解決response.setHeader設(shè)置下載文件名無(wú)效的問(wèn)題

    這篇文章主要介紹了解決response.setHeader設(shè)置下載文件名無(wú)效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Springboot如何實(shí)現(xiàn)Web系統(tǒng)License授權(quán)認(rèn)證

    Springboot如何實(shí)現(xiàn)Web系統(tǒng)License授權(quán)認(rèn)證

    這篇文章主要介紹了Springboot如何實(shí)現(xiàn)Web系統(tǒng)License授權(quán)認(rèn)證,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Java的Flowable工作流之加簽轉(zhuǎn)簽詳解

    Java的Flowable工作流之加簽轉(zhuǎn)簽詳解

    這篇文章主要介紹了Java的Flowable工作流之加簽轉(zhuǎn)簽詳解,Flowable是一個(gè)開(kāi)源的工作流引擎,它提供了一套強(qiáng)大的工具和功能,用于設(shè)計(jì)、執(zhí)行和管理各種類(lèi)型的工作流程,需要的朋友可以參考下
    2023-11-11
  • Java Lambda表達(dá)式與引用類(lèi)淺析

    Java Lambda表達(dá)式與引用類(lèi)淺析

    Lambda表達(dá)式是Java SE8中一個(gè)重要的新特性,允許通過(guò)表達(dá)式來(lái)代替功能接口。本文將通過(guò)一些簡(jiǎn)單的示例和大家講講Lamda表達(dá)式的使用,感興趣的可以了解一下
    2023-01-01
  • Spring MVC 中 AJAX請(qǐng)求并返回JSON的示例

    Spring MVC 中 AJAX請(qǐng)求并返回JSON的示例

    本篇文章主要介紹了Spring MVC 中 AJAX請(qǐng)求并返回JSON,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-01-01
  • hashtable桶數(shù)通常會(huì)取一個(gè)素?cái)?shù)分析

    hashtable桶數(shù)通常會(huì)取一個(gè)素?cái)?shù)分析

    這篇文章主要介紹了hashtable桶數(shù)通常會(huì)取一個(gè)素?cái)?shù)分析的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Java修改PowerPoint幻燈片批注信息

    Java修改PowerPoint幻燈片批注信息

    這篇文章主要介紹了Java修改PowerPoint幻燈片批注信息,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Java控制臺(tái)版五子棋的簡(jiǎn)單實(shí)現(xiàn)方法

    Java控制臺(tái)版五子棋的簡(jiǎn)單實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于Java控制臺(tái)版五子棋的簡(jiǎn)單實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • MyBatisPlus中CRUD使用方法詳解

    MyBatisPlus中CRUD使用方法詳解

    通用CRUD封裝,BaseMapper(opens new window)接口,為Mybatis-Plus啟動(dòng)時(shí)自動(dòng)解析實(shí)體表關(guān)系映射轉(zhuǎn)換為Mybatis內(nèi)部對(duì)象注入容器
    2023-01-01
  • Java如何獲取指定目錄文件列表

    Java如何獲取指定目錄文件列表

    這篇文章主要介紹了Java如何獲取指定目錄文件列表,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08

最新評(píng)論