亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

 前面通過入門案例介紹,我們發現在SpringSecurity中如果我們沒有使用自定義的登錄界面,那么SpringSecurity會給我們提供一個系統登錄界面。但真實項目中我們一般都會使用自定義的登錄界面,本文我們就來介紹下如何實現該操作。
注意:本文是在入門案例代碼的基礎上演示的!

一、頁面準備

我們準備如下相關的jsp頁面

1.login.jsp頁面

<%--
  Created by IntelliJ IDEA.
  User: dengp
  Date: 2019/12/1
  Time: 20:40
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="JAVA" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>登錄管理</h1>

    <form>
        賬號:<input type="text" name="username"><br>
        密碼:<input type="password" name="password"><br>
        <input type="submit" value="登錄"><br>
    </form>
    <img src="img/a1.jpg">
</body>
</html>

2.home.jsp頁面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>home界面</h1>
</body>
</html>

3.其他頁面

SpringSecurity實現自定義登錄界面

 

在這里插入圖片描述

二、SpringSecurity相關配置

1.配置認證信息

配置登錄和注銷相關的信息

<security:http auto-config="true" use-expressions="true">
    <!--
        攔截資源
        pattern="/**" 攔截所有的資源
        access="hasanyrole('role1')" 表示只有role1這個角色可以訪問資源
     -->
    <security:intercept-url pattern="/**" access="hasanyrole('role_user')"></security:intercept-url>
    <!--
        配置認證信息
     login-page="/login.jsp"  自定義的登錄頁面
     login-processing-url="/login" security中處理登錄的請求
     default-target-url="/home.jsp" 默認的跳轉地址
     authentication-failure-url="/failure.jsp" 登錄失敗的跳轉地址
     -->
    <security:form-login login-page="/login.jsp"
                        login-processing-url="/login"
                         default-target-url="/home.jsp"
                         authentication-failure-url="/failure.jsp"
    />
    <!-- 配置退出的登錄信息 -->
    <security:logout logout-url="/logout"
                     logout-success-url="/login.jsp"
    />
</security:http>

2.認證界面匿名訪問

前面配置的

<security:intercept-url pattern="/**" access="hasanyrole('role_user')"></security:intercept-url>

會使登錄界面不可訪問,所以我們需要方法

SpringSecurity實現自定義登錄界面

 

在這里插入圖片描述

3.放過靜態資源

同樣的系統的 js css 等靜態資源文件也會被對應的過濾器攔截,所以也需要方法

SpringSecurity實現自定義登錄界面

 

在這里插入圖片描述

4.登錄測試

啟動服務我們訪問登錄試試

SpringSecurity實現自定義登錄界面

 

在這里插入圖片描述

可以訪問到,然后提交登錄看看
注意表單設置

SpringSecurity實現自定義登錄界面

 

在這里插入圖片描述


然后訪問出現了403錯誤

SpringSecurity實現自定義登錄界面

 

在這里插入圖片描述

三、關閉csrf攔截

  上面我們在賬號和角色都正確的情況下,登錄后出現了 403錯誤,原因是因為 csrf過濾器攔截了,那為什么系統提供的登錄界面沒問題呢?原因是如下

SpringSecurity實現自定義登錄界面

 

在這里插入圖片描述


在系統提供的登錄表單中隱藏的有csrf相關的信息。這時我們可以關閉csrf過濾器,來實現登錄工作

SpringSecurity實現自定義登錄界面

 

在這里插入圖片描述

重啟服務再測試就可以了

SpringSecurity實現自定義登錄界面

 

在這里插入圖片描述

四、csrf防護

  上面我們通過關閉csrf過濾器實現了認證功能,但是系統將面臨csrf攻擊的風險,所以我們需要放開服務,同時也要能夠完成認證。首先我們來看下CsrfFilter的源碼

1.CsrfFilter源碼查看

SpringSecurity實現自定義登錄界面

 

在這里插入圖片描述


this.requireCsrfProtectionMatcher.matches(request)方法

SpringSecurity實現自定義登錄界面

 

在這里插入圖片描述


通過 GET HEAD TRACE OPTIONS 提交的數據不會 csrf 驗證

2.放開過濾器

前面關閉的我們需要放開

SpringSecurity實現自定義登錄界面

 

在這里插入圖片描述

3.頁面動態token

導入security標簽

SpringSecurity實現自定義登錄界面

 

在這里插入圖片描述


在表單中使用,作用和下面的一致

SpringSecurity實現自定義登錄界面

 

在這里插入圖片描述


:ajax方式提交的時候使用

五、注銷功能

在home.jsp中添加注銷鏈接

SpringSecurity實現自定義登錄界面

 

在這里插入圖片描述

點擊后出現了404錯誤原因是:自定義的注銷功能必須通過post方式提交才行,所以如下

SpringSecurity實現自定義登錄界面

 

在這里插入圖片描述

SpringSecurity實現自定義登錄界面

 

在這里插入圖片描述

出現這個原因是 csrf的原因,加標簽即可

SpringSecurity實現自定義登錄界面

 

在這里插入圖片描述

搞定~

分享到:
標簽:SpringSecurity
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定