第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring Security:數(shù)據(jù)庫和applicationContext中的密碼編碼

Spring Security:數(shù)據(jù)庫和applicationContext中的密碼編碼

慕容3067478 2019-10-18 10:01:08
具有配置(applicationContext-security.xml):<authentication-manager alias="authenticationManager">    <authentication-provider>    <password-encoder hash="sha"/>        <jdbc-user-service data-source-ref="dataSource"/>    </authentication-provider></authentication-manager>從另一端dataSource(我的JdbcDaoImpl)有SQL :...    public static final String DEF_USERS_BY_USERNAME_QUERY =            "select username,password,enabled " +            "from users " +            "where username = ?";...sha此代碼中現(xiàn)在有一個單詞,因此從標準Spring Security users表中選擇的密碼未編碼。也許,我應該在休眠映射配置中sha為password列提供一些屬性:<class name="model.UserDetails" table="users">    <id name="id">        <generator class="increment"/>    </id>    <property name="username" column="username"/>    <property name="password" column="password"/>    <property name="enabled" column="enabled"/>    <property name="mail" column="mail"/>    <property name="city" column="city"/>    <property name="confirmed" column="confirmed"/>    <property name="confirmationCode" column="confirmation_code"/>    <set name="authorities" cascade="all" inverse="true">        <key column="id" not-null="true"/>        <one-to-many class="model.Authority"/>    </set></class>目前,密碼原樣保存到DB,但是應該進行編碼。如何讓applicationContextconfig和DB查詢成為相同的密碼編碼?
查看完整描述

3 回答

?
慕桂英4014372

TA貢獻1871條經(jīng)驗 獲得超13個贊

如果您自己選擇一個哈希系統(tǒng),而不是使用已經(jīng)包含哈希密碼的現(xiàn)有數(shù)據(jù)庫來構(gòu)建應用程序,則應確保哈希算法也使用了鹽。不要只使用簡單的摘要。


bcrypt是一個不錯的選擇,現(xiàn)在我們可以通過BCryptPasswordEncoder(使用jBCrypt實現(xiàn))在Spring Security 3.1中直接支持bcrypt 。這會自動生成一個鹽,并將其與哈希值在單個String中連接。


一些數(shù)據(jù)庫內(nèi)置了對哈希的支持(例如Postgres)。否則,您需要先對密碼進行哈希處理,然后再將其傳遞給JDBC:


String password = "plaintextPassword";

PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();

String hashedPassword = passwordEncoder.encode(password);

創(chuàng)建用戶時,只需要做這些即可對密碼進行編碼。


對于身份驗證,您將使用類似以下的內(nèi)容:


<bean id="encoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>


<bean id="authProvider" class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">

  <property name="userDetailsService" ref="yourJdbcUserService" />

  <property name="passwordEncoder" ref="encoder" />

</bean>


查看完整回答
反對 回復 2019-10-18
?
繁星coding

TA貢獻1797條經(jīng)驗 獲得超4個贊

您可以通過簡單的方式在applicationContext-security.xml中執(zhí)行類似操作


<authentication-manager alias="authenticationManager">

   <authentication-provider>

    <password-encoder ref="encoder"/>

    <jdbc-user-service data-source-ref="dataSource"

       users-by-username-query="

          select username,password, enabled 

          from principal where username=?" 

       authorities-by-username-query="

          select p.username, a.authority from principal p, authority a

          where p.id = a.principal_id and p.username=?" 

    />

   </authentication-provider>

</authentication-manager> 


  <beans:bean id="encoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>

在Java中


public static String encodePasswordWithBCrypt(String plainPassword){

    return new BCryptPasswordEncoder().encode(plainPassword);

}

然后測試


System.out.println(encodePasswordWithBCrypt("fsdfd"));


查看完整回答
反對 回復 2019-10-18
  • 3 回答
  • 0 關(guān)注
  • 771 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號