最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring Security的自定義用戶認(rèn)證過程詳解

 更新時(shí)間:2019年09月29日 14:57:19   作者:King-D  
這篇文章主要介紹了spring Security的自定義用戶認(rèn)證過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

首先我需要在xml文件中聲明.我要進(jìn)行自定義用戶的認(rèn)證類,也就是我要自己從數(shù)據(jù)庫中進(jìn)行查詢

<http pattern="/*.html" security="none"/>
  <http pattern="/css/**" security="none"/>
  <http pattern="/img/**" security="none"/>
  <http pattern="/js/**" security="none"/>
  <http pattern="/plugins/**" security="none"/>
  <http pattern="/seller/add.do" security="none"/>

  <!-- use-expressions:設(shè)置是否啟動(dòng)SpEL表達(dá)式,默認(rèn)值是true。 -->
  <http use-expressions="false">
    <!--
      配置SpringSecurity的攔截路徑(攔截規(guī)則)
      * pattern:配置攔截規(guī)則。  /* 代表的是根路徑下的所有資源(不包含子路徑) /**代表的是根路徑下所有的資源(包含子路徑)
      * access:設(shè)置角色 角色命名 ROLE_角色名稱 如: ROLE_USER
    -->
    <intercept-url pattern="/**" access="ROLE_SELLER"/>

    <!--
    開啟表單驗(yàn)證
      username-parameter="username"
      password-parameter="password"
      login-page      :登錄頁面名稱 以 / 開始
      default-target-url  :登錄成功后跳轉(zhuǎn)的頁面
      login-processing-url:提交的路徑的設(shè)置 默認(rèn)值"/login" 可以修改
    -->
    <form-login login-page="/shoplogin.html" default-target-url="/admin/index.html" always-use-default-target="true" authentication-failure-url="/shoplogin.html"/>

    <!-- 不使用csrf的校驗(yàn) -->
    <csrf disabled="true"/>

    <!-- 配置框架頁面不攔截 -->
    <headers>
      <frame-options policy="SAMEORIGIN"/>
    </headers>

    <!-- 注銷的配置 -->
    <logout logout-url="/logout" logout-success-url="/shoplogin.html" />
  </http>

  <!-- 配置認(rèn)證管理器 -->
  <authentication-manager>
    <!-- 認(rèn)證的提供者 -->
    <authentication-provider user-service-ref="userDetailService">
      <password-encoder ref="passwordEncoder"></password-encoder>
    </authentication-provider>
  </authentication-manager>
<!-- 配置自定義的認(rèn)證類 -->
  <beans:bean id="userDetailService" class="com.qingmu2.core.service.UserDetailServiceImpl">
    <beans:property name="sellerService" ref="sellerService"></beans:property>
  </beans:bean>

<!--加密時(shí)候使用的算法是BCryptPasswordEncoder-->
  <beans:bean id="passwordEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>

配置完自定義的文件以后,在需要自定義認(rèn)證類的模塊中實(shí)現(xiàn)

UserDetailsService

package com.qingmu2.core.service;
import com.alibaba.dubbo.config.annotation.Reference;
import com.qingmu2.core.pojo.seller.Seller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;

/**
 * 自定義的認(rèn)證類
 * @Auther:qingmu
 * @Description:腳踏實(shí)地,只為出人頭地
 * @Date:Created in 8:33 2019/5/31
 */
public class UserDetailServiceImpl implements UserDetailsService {

  private SellerService sellerService;

  public UserDetailServiceImpl() {
  }
  @Override
  public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
    Seller seller = sellerService.findOne(username);
    if(null!=seller){
      //判斷一次商家是否被審核通過.
      if("1".equals(seller.getStatus())){
        //創(chuàng)建一個(gè)集合,用來存儲(chǔ)權(quán)限
        HashSet<GrantedAuthority> authorities = new HashSet<>();
        authorities.add(new SimpleGrantedAuthority("ROLE_SELLER"));
        //將這個(gè)用戶的信息返回給認(rèn)證類
        return new User(username,seller.getPassword(),authorities);
      }
    }
    //沒有這個(gè)用戶,則返回null
    return null;
  }

  public UserDetailServiceImpl(SellerService sellerService) {
    this.sellerService = sellerService;
  }

  public SellerService getSellerService() {
    return sellerService;
  }

  public void setSellerService(SellerService sellerService) {
    this.sellerService = sellerService;
  }
}

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

相關(guān)文章

  • Java 中的語法糖,真甜

    Java 中的語法糖,真甜

    語法糖(Syntactic sugar),也叫做糖衣語法,是英國科學(xué)家發(fā)明的一個(gè)術(shù)語,通常來說使用語法糖能夠增加程序的可讀性,從而減少程序代碼出錯(cuò)的機(jī)會(huì).這篇文章主要介紹了Java 中的語法糖知識,需要的朋友可以參考下
    2020-12-12
  • 讀取spring配置文件的方法(spring讀取資源文件)

    讀取spring配置文件的方法(spring讀取資源文件)

    這篇文章主要介紹了讀取spring配置文件的方法,需要的朋友可以參考下
    2014-02-02
  • Java中的序列化(Serializable)和反序列化

    Java中的序列化(Serializable)和反序列化

    這篇文章主要介紹了Java中的序列化(Serializable)和反序列化,?JAVA序列化與反序列化就是JAVA對象與一串字節(jié)流之間的相互轉(zhuǎn)換,?我們在程序中創(chuàng)建的JAVA對象只存在于JVM中,需要的朋友可以參考下
    2023-09-09
  • PostMan傳@RequestParam修飾的數(shù)組方式

    PostMan傳@RequestParam修飾的數(shù)組方式

    這篇文章主要介紹了PostMan傳@RequestParam修飾的數(shù)組方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • java使用歸并刪除法刪除二叉樹中節(jié)點(diǎn)的方法

    java使用歸并刪除法刪除二叉樹中節(jié)點(diǎn)的方法

    這篇文章主要介紹了java使用歸并刪除法刪除二叉樹中節(jié)點(diǎn)的方法,實(shí)例分析了java二叉樹算法的相關(guān)操作技巧,需要的朋友可以參考下
    2015-05-05
  • 講解Java中的基礎(chǔ)類庫和語言包的使用

    講解Java中的基礎(chǔ)類庫和語言包的使用

    這篇文章主要介紹了Java中的基礎(chǔ)類庫和語言包的使用,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • Spring Boot使用Allatori代碼混淆的方法

    Spring Boot使用Allatori代碼混淆的方法

    這篇文章主要介紹了Spring Boot使用Allatori代碼混淆的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • Java實(shí)現(xiàn)將CSV轉(zhuǎn)為Excel的示例代碼

    Java實(shí)現(xiàn)將CSV轉(zhuǎn)為Excel的示例代碼

    CSV(Comma?Separated?Values)文件是一種純文本文件,包含用逗號分隔的數(shù)據(jù),常用于將數(shù)據(jù)從一個(gè)應(yīng)用程序?qū)牖驅(qū)С龅搅硪粋€(gè)應(yīng)用程序。本文將利用Java實(shí)現(xiàn)CSV轉(zhuǎn)為Excel,感興趣的可以了解一下
    2022-03-03
  • Java如何獲取Date的“昨天”與“明天”示例代碼

    Java如何獲取Date的“昨天”與“明天”示例代碼

    最近在做項(xiàng)目的時(shí)候用到Date和Calendar比較多,而且用到的方式也比較全,突然想到一個(gè)問題,Java如何獲取Date的"昨天"與"明天",也就是前一天和后一天呢?思考后寫出了方法,想著萬一以后用到,就總結(jié)出來,也方便有需要的朋友們參考借鑒,下面來一起看看吧。
    2016-12-12
  • Spring mvc工作原理_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Spring mvc工作原理_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了Spring mvc工作原理的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08

最新評論

独山县| 师宗县| 嵊州市| 城固县| 玉树县| 静乐县| 泽州县| 英吉沙县| 阿拉善右旗| 财经| 沽源县| 玉树县| 阳东县| 仁布县| 麻城市| 广宁县| 惠来县| 巴中市| 亳州市| 伊吾县| 弋阳县| 额尔古纳市| 应用必备| 大邑县| 柘城县| 全椒县| 泗洪县| 泸州市| 元氏县| 应用必备| 西充县| 馆陶县| 西平县| 山丹县| 凌源市| 南阳市| 宜川县| 河津市| 泰宁县| 夏津县| 沙河市|