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

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

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

首先我需要在xml文件中聲明.我要進(jìn)行自定義用戶(hù)的認(rèn)證類(lèi),也就是我要自己從數(shù)據(jù)庫(kù)中進(jìn)行查詢(xú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_角色名稱(chēng) 如: ROLE_USER
    -->
    <intercept-url pattern="/**" access="ROLE_SELLER"/>

    <!--
    開(kāi)啟表單驗(yàn)證
      username-parameter="username"
      password-parameter="password"
      login-page      :登錄頁(yè)面名稱(chēng) 以 / 開(kāi)始
      default-target-url  :登錄成功后跳轉(zhuǎn)的頁(yè)面
      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"/>

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

    <!-- 注銷(xiāo)的配置 -->
    <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)證類(lèi) -->
  <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)證類(lèi)的模塊中實(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)證類(lèi)
 * @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){
      //判斷一次商家是否被審核通過(guò).
      if("1".equals(seller.getStatus())){
        //創(chuàng)建一個(gè)集合,用來(lái)存儲(chǔ)權(quán)限
        HashSet<GrantedAuthority> authorities = new HashSet<>();
        authorities.add(new SimpleGrantedAuthority("ROLE_SELLER"));
        //將這個(gè)用戶(hù)的信息返回給認(rèn)證類(lèi)
        return new User(username,seller.getPassword(),authorities);
      }
    }
    //沒(méi)有這個(gè)用戶(hù),則返回null
    return null;
  }

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

  public SellerService getSellerService() {
    return sellerService;
  }

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

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

相關(guān)文章

  • Java數(shù)組操作的10大方法

    Java數(shù)組操作的10大方法

    下面是精心整理的Java數(shù)組操作的10大方法,大部分代碼都來(lái)自Stack Overflow,需要的朋友可以參考下
    2014-09-09
  • 深入理解Java原生的序列化機(jī)制

    深入理解Java原生的序列化機(jī)制

    Java 提供了一種對(duì)象序列化的機(jī)制,該機(jī)制中,一個(gè)對(duì)象可以被表示為一個(gè)字節(jié)序列,該字節(jié)序列包括該對(duì)象的數(shù)據(jù)、有關(guān)對(duì)象的類(lèi)型的信息和存儲(chǔ)在對(duì)象中數(shù)據(jù)的類(lèi)型。下面小編和大家來(lái)一起學(xué)習(xí)一下吧
    2019-06-06
  • java編譯命令基礎(chǔ)知識(shí)點(diǎn)

    java編譯命令基礎(chǔ)知識(shí)點(diǎn)

    在本篇文章里小編給大家整理的是一篇關(guān)于java編譯命令基礎(chǔ)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • 利用枚舉法求直方圖中最大矩形面積的方法實(shí)例

    利用枚舉法求直方圖中最大矩形面積的方法實(shí)例

    今天小編就為大家分享一篇關(guān)于利用枚舉法求直方圖中最大矩形面積的方法實(shí)例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • SpringBoot復(fù)雜參數(shù)應(yīng)用詳細(xì)講解

    SpringBoot復(fù)雜參數(shù)應(yīng)用詳細(xì)講解

    我們?cè)诰帉?xiě)接口時(shí)會(huì)傳入復(fù)雜參數(shù),如Map、Model等,這種類(lèi)似的參數(shù)會(huì)有相應(yīng)的參數(shù)解析器進(jìn)行解析,并且最后會(huì)將解析出的值放到request域中,下面我們一起來(lái)探析一下其中的原理
    2022-09-09
  • Java8中的類(lèi)型注解淺析

    Java8中的類(lèi)型注解淺析

    這篇文章主要介紹了Java8中的類(lèi)型注解淺析,java8之前,注解只能是在聲明的地方所使用,java8里面的注解則可以應(yīng)用在任何地方,需要的朋友可以參考下
    2014-06-06
  • maven-surefire-plugin總結(jié)示例詳解

    maven-surefire-plugin總結(jié)示例詳解

    這篇文章主要介紹了maven-surefire-plugin總結(jié),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Java servlet、filter、listener、interceptor之間的區(qū)別和聯(lián)系

    Java servlet、filter、listener、interceptor之間的區(qū)別和聯(lián)系

    這篇文章主要介紹了Java servlet、filter、listener、interceptor之間的區(qū)別和聯(lián)系的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • java顯示當(dāng)前美國(guó)洛杉磯時(shí)間

    java顯示當(dāng)前美國(guó)洛杉磯時(shí)間

    這篇文章主要介紹了java顯示當(dāng)前美國(guó)洛杉磯時(shí)間的方法,也就是當(dāng)前時(shí)間的切換,需要的朋友可以參考下
    2014-02-02
  • Spring注入Map集合實(shí)現(xiàn)策略模式詳解

    Spring注入Map集合實(shí)現(xiàn)策略模式詳解

    這篇文章主要介紹了Spring注入Map集合實(shí)現(xiàn)策略模式詳解,Spring提供通過(guò)@Resource注解將相同類(lèi)型的對(duì)象注入到Map集合,并將對(duì)象的名字作為key,對(duì)象作為value封裝進(jìn)入Map,需要的朋友可以參考下
    2023-11-11

最新評(píng)論