spring security 自定義登錄頁面及從數據庫查詢賬戶登錄


一.使用自定義登錄頁面

  1.首先關閉 登錄頁面 , 登錄錯誤后跳轉頁面, 登錄成功后跳轉頁面 的攔截

     <!--不攔截靜態資源-->
<security:http pattern="/css/**" security="none"></security:http>
<security:http pattern="/img/**" security="none"></security:http>
<security:http pattern="/plugins/**" security="none"></security:http>

<!--不攔截登錄 不攔截 error-->
<security:http pattern="/login.jsp" security="none"/>
<security:http pattern="/file.jsp" security="none"/>
<security:http pattern="/index.ico" security="none"/>
 

  2.自定義登錄頁面

 <security:http  use-expressions="false">
        <security:intercept-url pattern="/**" access="ROLE_USER"/>
        <!--開啟表單登錄
            login-page=""  登錄頁面
        login-processing-url="/log" 登錄提交頁面路徑,默認login
default-target-url="" 登錄成功頁面 authentication-failure-url="" 登錄失敗頁面 --> <security:form-login login-page="/login.jsp" login-processing-url="/log" default-target-url="/index.jsp" authentication-failure-url="/file.jsp" /> <!--關閉跨越請求 如果沒有關閉會報403錯誤--> <security:csrf disabled="true"/>
</security:http>

二. 從數據庫查詢用戶登錄

1.修改spring-security配置

 <!-- 配置認證登錄信息 從數據庫讀取賬戶-->
<security:authentication-manager>
   <!--提供服務類 去數據庫查詢賬戶密碼-->
  <security:authentication-provider user-service-ref="membersServiceImpl">
  </security:authentication-provider>
</security:authentication-manager>

2.創建pojo dao service層

注:service接口要繼承UserDetailsService

public class MembersServiceImpl implements MembersService {

    @Autowired
    MembersDao membersDao;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
          //根據用戶名獲取對象
       Members members
= membersDao.findByName(username); if (members!=null){
        //創建角色集合對象 Collection
<GrantedAuthority> authorities = new ArrayList<>();
           GrantedAuthority grantedAuthority
= new SimpleGrantedAuthority("ROLE_USER"); authorities.add(grantedAuthority); User user = new User(members.getUserName(), "{noop}"+members.getPassword(), authorities); return user; } return null; } }

 

 

 

注:順序不能錯,先關閉要頁面的攔截,再定義頁面,否則無法運行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM