欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

SpringSecurity中怎么實現(xiàn)表單登錄功能

這篇文章給大家介紹SpringSecurity中怎么實現(xiàn)表單登錄功能,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

創(chuàng)新互聯(lián)自成立以來,一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設計、成都做網(wǎng)站、網(wǎng)站設計、電子商務、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營銷服務。公司擁有豐富的網(wǎng)站建設和互聯(lián)網(wǎng)應用系統(tǒng)開發(fā)管理經(jīng)驗、成熟的應用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開發(fā)工程師團隊及專業(yè)的網(wǎng)站設計師團隊。

2. Maven 依賴

要將Maven依賴項添加到項目中,請參閱Spring Security with Maven 一文。 標準的 spring-security-web 和 spring-security-config 都是必需的。

3. Spring Security Java配置

我們首先創(chuàng)建一個擴展 WebSecurityConfigurerAdapter 的 Spring Security 配置類。 通過添加 @EnableWebSecurity ,我們獲得了Spring Security和MVC集成支持:

@Configuration@EnableWebSecuritypublic class SecSecurityConfig extends WebSecurityConfigurerAdapter {  @Override  protected void configure(final AuthenticationManagerBuilder auth) throws Exception {    auth.inMemoryAuthentication()     .withUser("user1").password(passwordEncoder().encode("user1Pass")).roles("USER")     .and()     .withUser("user2").password(passwordEncoder().encode("user2Pass")).roles("USER")     .and()     .withUser("admin").password(passwordEncoder().encode("adminPass")).roles("ADMIN");  }  @Override  protected void configure(final HttpSecurity http) throws Exception {    http     .csrf().disable()     .authorizeRequests()     .antMatchers("/admin/**").hasRole("ADMIN")     .antMatchers("/anonymous*").anonymous()     .antMatchers("/login*").permitAll()     .anyRequest().authenticated()     .and()     .formLogin()     .loginPage("/login.html")     .loginProcessingUrl("/perform_login")     .defaultSuccessUrl("/homepage.html", true)     //.failureUrl("/login.html?error=true")     .failureHandler(authenticationFailureHandler())     .and()     .logout()     .logoutUrl("/perform_logout")     .deleteCookies("JSESSIONID")     .logoutSuccessHandler(logoutSuccessHandler());  }  @Bean  public PasswordEncoder passwordEncoder() {    return new BCryptPasswordEncoder();  }}

在此示例中,我們使用內(nèi)存身份驗證并定義了3個用戶。

現(xiàn)在來看看我們用來創(chuàng)建表單登錄配置的元素。

3.1. authorizeRequests()

我們允許匿名訪問*/login*,以便用戶可以進行身份驗證,同時也是保護其他請求。請注意,*antMatchers()*元素的順序很重要 - 首先需要填寫具體的路徑規(guī)則,然后是才是大致匹配的規(guī)則。

3.2. formLogin()

這有幾種方法可以用來配置表單登錄的行為:

loginPage() – 自定義登錄頁面loginProcessingUrl() – 提交username和password的URLdefaultSuccessUrl() – 登錄成功后跳轉(zhuǎn)的URLfailureUrl() – 登錄失敗后跳轉(zhuǎn)的URL

3.3. Authentication Manager

身份驗證提供程序由一個簡單的內(nèi)存實現(xiàn)支持 - InMemoryUserDetailsManager 。 當尚不需要完整的持久性機制時,這對于進行快速原型設計很有用。

從Spring 5開始,我們還必須定義密碼編碼器。 在我們的例子中,我們使用了 BCryptPasswordEncoder 。

4. 添加Spring Security到Web應用

要使用上面定義的Spring Security配置,我們需要將其添加到Web應用程序。 在這種情況下,我們不需要任何 web.xml :

public class SpringApplicationInitializer  extends AbstractAnnotationConfigDispatcherServletInitializer {    protected Class<?>[] getRootConfigClasses() {    return new Class[] {SecSecurityConfig.class};  }}

注意,如果我們使用Spring Boot應用程序,則不需要此初始化程序。 有關(guān)如何在Spring Boot中加載安全性配置的更多詳細信息,詳情參閱 Spring Boot security auto-configuration

5. Spring Security XML配置

我們來看看相應的XML配置。整個項目使用Java配置,因此我們需要通過Java @Configuration 類導入XML配置文件:

@Configuration@ImportResource({ "classpath:webSecurityConfig.xml" })public class SecSecurityConfig {  public SecSecurityConfig() {   super();  }}

以及Spring Security 的XML配置– webSecurityConfig.xml :

<http use-expressions="true">  <intercept-url pattern="/login*" access="isAnonymous()" />  <intercept-url pattern="/**" access="isAuthenticated()"/>   <form-login login-page='/login.html'   default-target-url="/homepage.html"   authentication-failure-url="/login.html?error=true" />  <logout logout-success-url="/login.html" /></http> <authentication-manager>  <authentication-provider>    <user-service>      <user name="user1" password="user1Pass" authorities="ROLE_USER" />    </user-service>    <password-encoder ref="encoder" />  </authentication-provider></authentication-manager> <beans:bean id="encoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"></beans:bean>

6. web.xml

在引入Spring 4之前,我們曾經(jīng)在 web.xml 中配置Spring Security - 只有一個額外的過濾器添加到 Spring MVC 的web.xml中:

<display-name>Spring Secured Application</display-name> <!-- Spring MVC --><!-- ... --><!-- Spring Security --><filter>  <filter-name>springSecurityFilterChain</filter-name>  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class></filter><filter-mapping>  <filter-name>springSecurityFilterChain</filter-name>  <url-pattern>/*</url-pattern></filter-mapping>

過濾器 - DelegatingFilterProxy - 簡單地委托給一個Spring管理的bean - FilterChainProxy-它本身可以從完整的Spring bean生命周期管理中受益。

7. Login Form

登錄表單頁面使用簡單的機制將視圖名稱映射到URL 向Spring MVC注冊,且無需編寫Controller:

registry.addViewController("/login.html");

對應于 login.jsp :

<html><head></head><body>  <h2>Login</h2>  <form name='f' action="login" method='POST'>   <table>     <tr>      <td>User:</td>      <td><input type='text' name='username' value=''></td>     </tr>     <tr>      <td>Password:</td>      <td><input type='password' name='password' /></td>     </tr>     <tr>      <td><input name="submit" type="submit" value="submit" /></td>     </tr>   </table> </form></body></html>

Spring Login form包含以下相關(guān)組件:

login - 接受表單POST的URL,觸發(fā)身份驗證過程username - 用戶名password - 密碼

8.進一步配置Spring登錄

當我們在上面介紹Spring安全配置時,我們簡要討論了一些登錄機制的配置 - 現(xiàn)在詳細介紹一下。

覆蓋Spring Security中大多數(shù)默認值的一個原因是隱藏應用程序受Spring Security保護的事實,并最大限度地減少潛在攻擊者對應用程序的了解。

完全配置后,login元素如下所示:

@Overrideprotected void configure(HttpSecurity http) throws Exception {  http.formLogin()   .loginPage("/login.html")   .loginProcessingUrl("/perform_login")   .defaultSuccessUrl("/homepage.html",true)   .failureUrl("/login.html?error=true")}

或者相應的XML配置:

<form-login login-page='/login.html' login-processing-url="/perform_login" default-target-url="/homepage.html" authentication-failure-url="/login.html?error=true" always-use-default-target="true"/>

8.1. 登錄頁

接下來,讓我們看看如何使用*loginPage()*方法配置自定義登錄頁面:

http.formLogin() .loginPage("/login.html")

或者,使用XML配置:

login-page='/login.html'

如果我們不指定這個,Spring Security將在*/login*上生成一個非常基本的登錄表單。

8.2. 登錄的POST URL

觸發(fā)身份驗證默認的URL是*/login*,我們可以使用 loginProcessingUrl 方法來覆蓋此URL:

http.formLogin() .loginProcessingUrl("/perform_login")

或者,使用XML配置:

login-processing-url="/perform_login"

覆蓋此默認URL的一個很好的理由是:隱藏應用程序受 Spring Security 保護的事實 - 該信息不應在外部提供。

8.3. 登錄成功頁面

成功登錄過程后,用戶將被重定向到頁面 - 默認情況下,該頁面是Web應用程序的根目錄。

我們可以通過*defaultSuccessUrl()*方法覆蓋它:

http.formLogin() .defaultSuccessUrl("/homepage.html")

或者,使用XML配置:

default-target-url="/homepage.html"

如果 always-use-default-target 設置為 true ,則用戶始終會重定向到此頁面。 如果該屬性設置為 false ,則在提示進行身份驗證之前,用戶將被重定向到他們想要訪問的上一頁。

8.4. 登錄失敗頁面

與登錄頁面相同,默認情況下, Spring Security 會在*/login?error*自動生成登錄失敗頁面。

要覆蓋它,我們可以使用*failureUrl()*方法:

http.formLogin() .failureUrl("/login.html?error=true")

或者XML:

authentication-failure-url="/login.html?error=true"

關(guān)于SpringSecurity中怎么實現(xiàn)表單登錄功能就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

網(wǎng)頁名稱:SpringSecurity中怎么實現(xiàn)表單登錄功能
URL標題:http://aaarwkj.com/article18/gdipdp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設、域名注冊、微信公眾號、手機網(wǎng)站建設面包屑導航、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
日韩精品视频一二三区| 国产亚洲一区二区三区av| 国产精品欧美日韩精品| 亚洲经典日韩欧美一区| 不卡的视频在线观看| 日本一区不卡二区高清| 日韩av高清在线播放| 国产高清剧情av网站| 日韩精品中文一区二区| 日韩精品一区伦理视频| 亚洲人妻av一区二区三区| 亚洲综合中文字幕久久网址| 成年视频免费观看视频| 亚洲综合偷拍欧美一区日韩| 97免费人妻在线视频| 久久精品国产精油按摩| 色哟哟网站在线精品视频| 国产日韩欧美一区综合| 国产精品一区二区在线观看| 亚洲精品一区二区三区三州| 不卡视频一区中文字幕| 成人夜间视频在线观看| 欧美日韩免费一区二三区| 日韩av一区二区久久久| 国产三级三级精品久久| 欧美在线观看黄片视频| 亚洲少妇熟女一区二区三区| 亚洲成人免费电影久久| 久久精品国产亚洲av高清一区 | 亚洲av乱码一区二区三| 91精品国产在线观看| 成人av男人天堂东京热| 精品亚洲午夜久久久久 | 日韩二区三区精品视频| 日韩性视频激情在线一区| 熟女中文字幕亚洲一区二区| 亚洲天堂av成人在线观看| 中文字幕日韩一区二区| 97超碰97资源在线| 日本成人精品二区在线观看| 哪里可以看黄色片日韩|