javascript
java B2B2C Springcloud电子商务平台源码-security简单使用
security的簡單原理:
需要JAVA Spring Cloud大型企業分布式微服務云構建的B2B2C電子商務平臺源碼:壹零叁八柒柒肆六二六
使用眾多的攔截器對url攔截,以此來管理權限。但是這么多攔截器,不可能對其一一來講,主要講里面核心流程的兩個。
首先,權限管理離不開登陸驗證的,所以登陸驗證攔截器AuthenticationProcessingFilter要講;還有就是對訪問的資源管理吧,所以資源管理攔截器AbstractSecurityInterceptor要講;但攔截器里面的實現需要一些組件來實現,所以就有了AuthenticationManager、accessDecisionManager等組件來支撐。
現在先大概過一遍整個流程,用戶登陸,會被AuthenticationProcessingFilter攔截,調用AuthenticationManager的實現,而且AuthenticationManager會調用ProviderManager來獲取用戶驗證信息(不同的Provider調用的服務不同,因為這些信息可以是在數據庫上,可以是在LDAP服務器上,可以是xml配置文件上等),如果驗證通過后會將用戶的權限信息封裝一個User放到spring的全局緩存SecurityContextHolder中,以備后面訪問資源時使用。
訪問資源(即授權管理),訪問url時,會通過AbstractSecurityInterceptor攔截器攔截,其中會調用FilterInvocationSecurityMetadataSource的方法來獲取被攔截url所需的全部權限,在調用授權管理器AccessDecisionManager,這個授權管理器會通過spring的全局緩存SecurityContextHolder獲取用戶的權限信息,還會獲取被攔截的url和被攔截url所需的全部權限,然后根據所配的策略(有:一票決定,一票否定,少數服從多數等),如果權限足夠,則返回,權限不夠則報錯并調用權限不足頁面。
雖然講得好像好復雜,讀者們可能有點暈,不過不打緊,真正通過代碼的講解在后面,讀者可以看完后面的代碼實現,再返回看這個簡單的原理,可能會有不錯的收獲。
在spring boot中使用security 首先導入spring security的包:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId> </dependency> 復制代碼在spring security中有一個非常重要的配置類需要編寫 就是繼承這個抽象類WebSecurityConfigurerAdapter,如下代碼所示 這個bean的目的是將我們的用戶存到內存中,這個用于調試還是可以的,但是我們開發中是不存在這樣的
@Bean@Overrideprotected UserDetailsService userDetailsService(){InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();manager.createUser(User.withUsername("user_1").password("123456").authorities("USER").build());manager.createUser(User.withUsername("user_2").password("123456").authorities("USER").build());return manager;}復制代碼上面這步完成后還需要我們將userdetail的類給添加到攔截器中,因為我們登錄是需要進行驗證用戶的,所以可以直接
@Autowiredpublic void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {auth.userDetailsService(userDetailsService);} 復制代碼這里面還可以設置其他參數,比如加密的方式以及其他等等。 在這個類中??梢栽O置一寫忽略的攔截類,即不需要進行驗證的
/** * 忽略設置的接口 */@Overridepublic void configure(WebSecurity web) throws Exception {String ignoring = env.getProperty("msi.auth.ignoring","/health|/info");web.ignoring().antMatchers(ignoring.split("\\|"));} 復制代碼不管是使用哪種方式,將用戶存到內存或者存到數據庫操作,都需要將操作放到
@Autowiredpublic void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {auth.userDetailsService(userDetailsService);}復制代碼java B2B2C springmvc mybatis電子商務平臺源碼
轉載于:https://juejin.im/post/5c22da45e51d4511fb7d8f03
總結
以上是生活随笔為你收集整理的java B2B2C Springcloud电子商务平台源码-security简单使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iphone13支持双卡双待吗 苹果13
- 下一篇: 漏斗分析