91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

spring Security中怎么自定義用戶認證

發布時間:2021-06-17 14:04:12 來源:億速云 閱讀:113 作者:Leah 欄目:編程語言

spring Security中怎么自定義用戶認證,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

首先我需要在xml文件中聲明.我要進行自定義用戶的認證類,也就是我要自己從數據庫中進行查詢

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

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

    <!-- 不使用csrf的校驗 -->
    <csrf disabled="true"/>

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

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

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

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

配置完自定義的文件以后,在需要自定義認證類的模塊中實現

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;

/**
 * 自定義的認證類
 * @Auther:qingmu
 * @Description:腳踏實地,只為出人頭地
 * @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())){
        //創建一個集合,用來存儲權限
        HashSet<GrantedAuthority> authorities = new HashSet<>();
        authorities.add(new SimpleGrantedAuthority("ROLE_SELLER"));
        //將這個用戶的信息返回給認證類
        return new User(username,seller.getPassword(),authorities);
      }
    }
    //沒有這個用戶,則返回null
    return null;
  }

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

  public SellerService getSellerService() {
    return sellerService;
  }

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

看完上述內容,你們掌握spring Security中怎么自定義用戶認證的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鄂伦春自治旗| 赤城县| 锡林郭勒盟| 泽州县| 宝山区| 沁源县| 同德县| 松潘县| 余干县| 若羌县| 大冶市| 阳曲县| 阳春市| 吴桥县| 调兵山市| 巨鹿县| 上思县| 和平区| 平邑县| 广汉市| 个旧市| 左贡县| 稻城县| 上林县| 县级市| 夹江县| 清苑县| 延安市| 河池市| 东莞市| 锡林浩特市| 尚志市| 山西省| 合水县| 巴南区| 天长市| 行唐县| 罗田县| 柏乡县| 濮阳市| 谢通门县|