真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

詳解使用SpringSecurity進(jìn)行自動登錄驗證

在之前的博客使用SpringMVC創(chuàng)建Web工程并使用SpringSecurity進(jìn)行權(quán)限控制的詳細(xì)配置方法 中,我們描述了如何配置一個基于SpringMVC、SpringSecurity框架的網(wǎng)站系統(tǒng)。在這篇博客中,我們將繼續(xù)描述如何使用Spring Security進(jìn)行登錄驗證。
總結(jié)一下Spring Security的登錄驗證關(guān)鍵步驟:

成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、網(wǎng)站建設(shè)、合浦網(wǎng)絡(luò)推廣、微信小程序開發(fā)、合浦網(wǎng)絡(luò)營銷、合浦企業(yè)策劃、合浦品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供合浦建站搭建服務(wù),24小時服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com

1、在數(shù)據(jù)庫中建好三張表,即users、authorities和persistent_logins三個。注意字段的定義,不能少,可以多,名字必須按規(guī)定來。

2、在Spring Security的配置文件中,配置好登錄跳轉(zhuǎn)的頁面,登錄處理的頁面和加密情況。

3、在前臺的jsp頁面中,登錄的字段必須和后臺users表中的一致,一般都是username和password。

4、注冊頁面必須自己寫,注冊的處理也要自己寫。

一、創(chuàng)建數(shù)據(jù)表

使用Spring Security進(jìn)行登錄驗證,需要我們在數(shù)據(jù)庫中建好相應(yīng)的表,并且字段要和Spring Security內(nèi)置的字段一致。主要有3張表需要建立。一是users表,包含用戶名和密碼以及用戶狀態(tài)的表;第二個是authorities表,表明該用戶角色的,方便做角色控制,比如是ROLE_USER還是ROLE_ADMIN(比如admin頁面可能需要用戶的ROLE_ADMIN權(quán)限,而ROLE_USER權(quán)限無法登錄這個管理頁面);最后一個是persistent_logins表,是登錄狀態(tài)的記錄表,主要用來提供支持“記住我”功能的。三張表的創(chuàng)建語句如下:

#create users table
CREATE TABLE `users` (
 `username` varchar(100) NOT NULL,
 `password` varchar(100) NOT NULL,
 `enabled` tinyint(1) NOT NULL DEFAULT '1',
 UNIQUE KEY `account` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

#create authorities table
CREATE TABLE `authorities` (
 `username` varchar(50) NOT NULL,
 `authority` varchar(50) DEFAULT NULL,
 PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

#create persistent_logins table
CREATE TABLE `persistent_logins` (
 `username` varchar(64) NOT NULL,
 `series` varchar(64) NOT NULL,
 `token` varchar(64) NOT NULL,
 `last_used` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 PRIMARY KEY (`series`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

記住,這三張表字段一定要至少包含以上字段。這樣Spring Security才能識別。但是,我們也可以額外添加一些字段,比如在users中添加uid等。

二、配置Spring Security的權(quán)限控制

配置Spring Security的控制信息就是配置哪些頁面需要登錄的用戶才能訪問,登錄的頁面是那一個,登陸成功跳轉(zhuǎn)到哪里等。以如下配置為例:所有的js等在resources文件夾下的內(nèi)容都不需要經(jīng)過過濾器,因為這些都是靜態(tài)資源。而首頁(/),登錄頁(/signin)、注冊頁(/register)等不需要用戶登錄,但是需要經(jīng)過過濾器(因為我們可能需要獲取未登錄用戶的一些信息)。兩種配置方式如下所示。最后我們使用這個配置來說明登錄頁面是”/signin”,即所有需要用戶登錄的頁面,在用戶未登錄情況下需要跳轉(zhuǎn)到這個頁面,讓用戶登錄。authentication-failure-url配置的是用戶登錄失敗的頁面,而default-target-url是配置用戶登錄成功后跳轉(zhuǎn)的頁面。

<?xml version="1.0" encoding="UTF-8"?>


  
  
  
  

  
  

    
    
    
    
    
    
    

    
    

    
    

    
    

    

     
       
    

  

  
    
      
      
    
  

  
    
      
        classpath:myMessages
      
    
  

  



注意,這里定義了,表明登錄的時候會對密碼進(jìn)行加密,那么后面我們寫注冊頁面的時候必須要對密碼加密之后才能存入數(shù)據(jù)庫。

三、創(chuàng)建登錄/注冊的頁面

這里屬于前臺的范疇,如果我們要使用Spring Security自帶的驗證方法,需要在前臺也配置一樣的信息來獲取驗證需要的字段,如用戶名和密碼。所以這里也是需要注意的地方。具體的頁面核心代碼如下(我們的頁面使用了Bootstrap的前端工具,所以要引入bootrap和jquery等外部樣式和腳本語言才會正常顯示,但是這些顯示不會影響功能,核心的字段不變即可):

詳解使用Spring Security進(jìn)行自動登錄驗證

這里有兩個Tab頁代碼,一個是登錄Tab一個是注冊Tab。主要是登錄的Tab要和Spring Security一致,即登錄的處理應(yīng)當(dāng)是login,即action="login",用戶名的ID和name應(yīng)該是username,而密碼的應(yīng)該是password,即提交給登錄驗證的兩個參數(shù)應(yīng)當(dāng)是username和password,處理的請求頁是login。

四、創(chuàng)建注冊后臺,定義登錄處理

當(dāng)?shù)卿涀皂撁孀龊弥?,需要定義一下處理請求,即跳轉(zhuǎn)的定義。然后只要寫注冊的后臺就行了。注意一點,Spring Security的注冊處理需要自己寫個后臺。用戶提交注冊后,我們需要把用戶名和密碼插入到數(shù)據(jù)庫中,又一點注意了,由于我們之前配置了密碼的加密,所以用戶注冊在插入數(shù)據(jù)庫之前需要加密,否則后面無法驗證通過。在注冊用戶的時候,我們需要更新users表的信息和authorities表信息,前者插入用戶名和密碼,并使得enabled=1(這個字段表示用戶是否正常,=0的話,狀態(tài)就是鎖定的)。在authorities中要寫入用戶對應(yīng)的角色(權(quán)限)。用戶注冊的時候密碼加密的關(guān)鍵代碼如下:

//插入users表的語句
String addUser = "insert into users(username,password) values(?,?)";

//對密碼參數(shù)進(jìn)行加密
String pwd = SpringSecurityUtil.encode(password);
Object[] param = {email, pwd};

//插入authorities表的語句
String addAuthority = "insert into authorities(username,authority) values(?,'ROLE_USER')";
Object[] authorityParam = {email};

int rows = 0;
try {
  rows = MyQueryRunnerUtil.getQueryRunner().update(addUser, param);
  rows += MyQueryRunnerUtil.getQueryRunner().update(addAuthority, authorityParam);
} catch (SQLException e) {
e.printStackTrace();
}

加密的代碼如下:

/**
  * BCrypt加密(適用于注冊時密碼加密)
  * 
  * @param rawPassword 明文密碼
  * @return encoderPassword 密文密碼,長度為60
  */
public static String encode(String rawPassword) {

  // 調(diào)用spring security的BCrypt加密
  BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
  String encoderPassword = encoder.encode(rawPassword);
  return encoderPassword;
}

這樣,用戶就可以注冊了。注冊好了就可以使用登錄功能了。

總結(jié)一下Spring Security的登錄驗證關(guān)鍵步驟:

1、在數(shù)據(jù)庫中建好三張表,即users、authorities和persistent_logins三個。注意字段的定義,不能少,可以多,名字必須按規(guī)定來。
2、在Spring Security的配置文件中,配置好登錄跳轉(zhuǎn)的頁面,登錄處理的頁面和加密情況。
3、在前臺的jsp頁面中,登錄的字段必須和后臺users表中的一致,一般都是username和password。
4、注冊頁面必須自己寫,注冊的處理也要自己寫。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


網(wǎng)站題目:詳解使用SpringSecurity進(jìn)行自動登錄驗證
文章轉(zhuǎn)載:http://weahome.cn/article/gghigi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部