亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

如何實現SpringSecurity的認證和授權

發布時間:2020-05-28 11:28:07 來源:億速云 閱讀:796 作者:Leah 欄目:編程語言

如何實現SpringSecurity的認證和授權針對這個問題,今天小編總結這篇有關SpringSecurity的文章,希望能幫助更多想解決這個問題的朋友找到更加簡單易行的辦法。

pom中的基礎上增加spring Security的依賴:

<dependency>
    <
groupId>org.springframework.security</groupId>
    <
artifactId>spring-security-web</artifactId>
    <
version>5.0.1.RELEASE</version>
</
dependency>
<
dependency>
    <
groupId>org.springframework.security</groupId>
    <
artifactId>spring-security-config</artifactId>
    <
version>5.0.1.RELEASE</version>
</
dependency>

創建spring的配置類ApplicationConfig.java

@Configuration
@ComponentScan
(basePackages = "cn.xh"
       
,excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,value = Controller.class)})
public class ApplicationConfig {
   
//在此配置除了Controller的其它bean,比如:數據庫鏈接池、事務管理器、業務bean等。
}

 

創建springmvc的配置類:

(basePackages = ,includeFilters = {(type = FilterType.,value = .)})
 WebConfig WebMvcConfigurer {
 
 
     InternalResourceViewResolver viewResolver(){
         InternalResourceViewResolver viewResolver = InternalResourceViewResolver();
         viewResolver.setPrefix();
         viewResolver.setSuffix();
         viewResolver;
     }
         
 }

 

加載spring容器:

在init包下定義spring容器的初始化類SpringApplicationInitializer,此類實現WebApplicationInitializer接口,spring容器啟動時加載WebApplicationInitializer接口的所有實現類:

SpringApplicationInitializer AbstractAnnotationConfigDispatcherServletInitializer {
     Class<?>[] getRootConfigClasses() {
         Class<?>[] { ApplicationConfig.};
     }
         Class<?>[] getServletConfigClasses() {
         Class<?>[] { WebConfig.};     }
String[] getServletMappings() {
         String [] {};
     }
 }

 

 

 

認證,Spring Security默認提供認證頁面

 config包下創建spring Security的配置類WebSecurityConfig,配置的內容包括:用戶信息、密碼編碼器、安全攔截機制

@EnableWebSecurity

WebSecurityConfig WebSecurityConfigurerAdapter {
     UserDetailsService userDetailsService() {
         InMemoryUserDetailsManager manager = InMemoryUserDetailsManager();
         manager.createUser(User.().password().authorities().build());
         manager.createUser(User.().password().authorities().build());
         manager;
     }
     PasswordEncoder passwordEncoder() {
         NoOpPasswordEncoder.();
     }
     configure(HttpSecurity http) Exception {
         http.authorizeRequests().antMatchers().authenticated().anyRequest().permitAll().and().formLogin().successForwardUrl();
     }
 }

 

 

userDetailsService方法返回一個UserDetailsService對象,spring security從這里獲取用戶的信息,這里創建了兩個用戶zhangsanlisi并設置了他們的密碼和權限。

 

Configure方法配置了/r/**的資源經過認證后才能訪問,支持form表單認證,認證成功后跳轉到loginsuccess

 

加載 WebSecurityConfig

修改SpringApplicationInitializergetRootConfigClasses()方法,添加WebSecurityConfig.class

Class<?>[] getRootConfigClasses() {
     Class<?>[] { ApplicationConfig.,WebSecurityConfig.};    
 }
 
 

Spring Security初始化:

如果當前環境沒有使用spring或spring mvc,則需要將WebSecurityConfig傳入超類,以獲取配置并創建spring context
 

public class SpringSecurityApplicationInitializer extends AbstractSecurityWebApplicationInitializer {
   
public SpringSecurityApplicationInitializer() {
//super(WebSecurityConfig.class);
   
}
}

 

默認根路徑請求:

WebConfig.java中添加默認請求根路徑跳轉到/login,此urlspring security提供:

     addViewControllers(ViewControllerRegistry registry) {
         registry.addViewController().setViewName();
     }

LoginController中定義/login-success

LoginController {
     (value = ,produces = {})
     String loginSuccess(){
         ;
     }
 }

 

授權:

LoginController中添加”/r/r1””/r/r2”

 

 

在spring security配置類:WebSecurityConfig.java中配置授權規則:
.antMatchers("/r/r1").hasAuthority("p1")
.antMatchers().hasAuthority()
 

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
            .antMatchers(
"/r/r1").hasAuthority("p1")
            .antMatchers(
"/r/r2").hasAuthority("p2")
            .antMatchers(
"/r/**").authenticated()//所有/r/**的請求必須認證通過
           
.anyRequest().permitAll()//除了/r/**,其它的請求可以訪問
           
.and()
            .formLogin()
//允許表單登錄
           
.successForwardUrl("/login-success");//自定義登錄成功的頁面地址
}

關于SpringSecurity的認證和授權的實現過程就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果喜歡這篇文章,不如把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

田东县| 弥勒县| 浦城县| 三门县| 腾冲县| 越西县| 新宁县| 仪征市| 黔江区| 封丘县| 太仓市| 松桃| 马山县| 潜江市| 历史| 扶风县| 上蔡县| 临西县| 蕉岭县| 石景山区| 泾阳县| 乌鲁木齐市| 吴江市| 咸丰县| 盐源县| 三台县| 洛扎县| 同德县| 秦安县| 五家渠市| 东台市| 双鸭山市| 济阳县| 静安区| 江口县| 吉隆县| 中卫市| 湟源县| 遂溪县| 出国| 武宣县|