欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Cloud?Studio構(gòu)建SpringSecurity權(quán)限框架(騰訊云?Cloud?Studio?實(shí)戰(zhàn)訓(xùn)練營)

 更新時間:2023年08月08日 10:13:26   作者:小鮑侃java  
隨著云計算技術(shù)的成熟和普及,傳統(tǒng)編程能力和資源以云服務(wù)的形式開放出來,從中間件、數(shù)據(jù)庫等水平能力服務(wù)組件到人臉識別、鑒權(quán)服務(wù)等基本業(yè)務(wù)服務(wù)組件很容易的在云端獲取,本文介紹使用Cloud?Studio構(gòu)建SpringSecurity權(quán)限框架的相關(guān)知識,感興趣的朋友一起看看吧

1.Cloud Studio(云端 IDE)簡介

Cloud Studio 是基于瀏覽器的集成式開發(fā)環(huán)境(IDE),為開發(fā)者提供了一個永不間斷的云端工作站。用戶在使用 Cloud Studio 時無需安裝,隨時隨地打開瀏覽器就能在線編程。

Cloud Studio 作為在線 IDE,包含代碼高亮、自動補(bǔ)全、Git 集成、終端等 IDE 的基礎(chǔ)功能,同時支持實(shí)時調(diào)試、插件擴(kuò)展等,可以幫助開發(fā)者快速完成各種應(yīng)用的開發(fā)、編譯與部署工作。

云端 IDE(Web IDE/在線 IDE/Cloud IDE)作為托管在云中的服務(wù)運(yùn)行,不再只是云端的軟件開發(fā)環(huán)境,而是提供了包括基礎(chǔ)設(shè)施服務(wù)的 Development-environment-as-a-Service 的服務(wù)模式,其天然具有如下優(yōu)勢:

  • 無需在本地維護(hù)和設(shè)置項(xiàng)目;
  • 更好的共享和協(xié)作;
  • 直接集成/訪問云服務(wù);
  • 改進(jìn)上下文切換(不同的項(xiàng)目、分支等)的方式和效率;
  • 源代碼的集中控制和保密;

隨著云計算技術(shù)的成熟和普及,越來越多的傳統(tǒng)編程能力和資源以云服務(wù)的形式開放出來,從中間件、數(shù)據(jù)庫等水平能力服務(wù)組件到人臉識別、鑒權(quán)服務(wù)等基本業(yè)務(wù)服務(wù)組件都可以很容易的在云端獲取。一旦世界從基于 IaaS 的應(yīng)用開發(fā)轉(zhuǎn)變?yōu)榛?IaaS、PaaS 甚至 SaaS 的混合應(yīng)用開發(fā)模式,云端 IDE(Web IDE/在線 IDE/Cloud IDE)將成為連接開發(fā)人員、PaaS、SaaS 云服務(wù)所有服務(wù)組件的最佳選擇。

Cloud Studio提供了大量常用語言模板,無論您是前端、后端、算法、全棧開發(fā)者,在Cloud Studio都能找到符合您的那一款。

同時,Cloud Studio還提供了數(shù)十種模板應(yīng)用,包括AI聊天、俄羅斯方塊、語言翻譯等。真正做到多款應(yīng)用開箱即用,Cloud Studio也提供了豐富的應(yīng)用生態(tài),開發(fā)者可以隨時提交自己的good idea。

2.應(yīng)用場景

Cloud Studio 在線編程工具適用于以下幾個場景:

2.1 快速啟動項(xiàng)目

使用 Cloud Studio 的預(yù)置環(huán)境,您可以直接創(chuàng)建對應(yīng)類型的工作空間,快速啟動項(xiàng)目進(jìn)入開發(fā)狀態(tài),無需進(jìn)行繁瑣的環(huán)境配置。

2.2 實(shí)時調(diào)試網(wǎng)頁

Cloud Studio 內(nèi)置預(yù)覽插件,可以實(shí)時顯示網(wǎng)頁應(yīng)用。當(dāng)您的代碼發(fā)生改變之后,預(yù)覽窗口會自動刷新,這樣您就可以在 Cloud Studio 內(nèi)實(shí)時開發(fā)調(diào)試網(wǎng)頁了。

2.3 遠(yuǎn)程訪問云服務(wù)器

Cloud Studio 支持您連接自己的云服務(wù)器,這樣就可以在編輯器中查看云服務(wù)器上的文件,進(jìn)行在線編程和部署工作。

2.4 協(xié)助開發(fā)

在居家辦公場景下,遇到難以解決的問題可以協(xié)調(diào)其他同組人員一起刨析和解決問題。

2.5 開發(fā)流程

提供溝通、編排、排錯、評審、測試一系列開發(fā)流程,使用者只需要關(guān)注業(yè)務(wù)開發(fā)即可。

2.6 強(qiáng)大的devops生態(tài)

配合git平臺coding+騰訊云服務(wù)器+Cloud Studio,中小企業(yè)輕松落地devops生態(tài),低成本上云、

3.SpringSecurity簡介

Spring Security是基于Spring 的身份認(rèn)證(Authentication)和用戶授權(quán)(Authorization)框架,提供了一套 Web 應(yīng)用安全性的完整解決方案。是市面上企業(yè)級安全框架的最優(yōu)選擇。

身份認(rèn)證指的是用戶去訪問系統(tǒng)資源時,系統(tǒng)要求驗(yàn)證用戶的身份信息,用戶身份合法才訪問對應(yīng)資源。常見的身份認(rèn)證一般要求用戶提供用戶名和密碼。系統(tǒng)通過校驗(yàn)用戶名和密碼來完成認(rèn)證過程。

當(dāng)身份認(rèn)證通過后,去訪問系統(tǒng)的資源,系統(tǒng)會判斷用戶是否擁有訪問該資源的權(quán)限,只允許訪問有權(quán)限的系統(tǒng)資源,沒有權(quán)限的資源將無法訪問,這個過程叫用戶授權(quán)。比如 會員管理模塊有增刪改查功能,有的用戶只能進(jìn)行查詢,而有的用戶可以進(jìn)行修改、刪除。一般來說,系統(tǒng)會為不同的用戶分配不同的角色,而每個角色則對應(yīng)一系列的權(quán)限。

通俗的說,SpringSecurity提供了賬號密碼的校驗(yàn)和操作人是否有權(quán)限訪問接口的功能。

4 快速開始項(xiàng)目

這里使用Cloud Studio快速開始一個SpringSecurity項(xiàng)目。

4.1 新建命名空間

這里提供了兩種方式:

  • 可以新建空的工作空間,按照博文完成項(xiàng)目構(gòu)建。
  • 也可以通過coding導(dǎo)入項(xiàng)目,項(xiàng)目地址:https://e.coding.net/bcl3/spring/CloudStudioSecurity.git

代碼結(jié)構(gòu)如下:

4.2 新建實(shí)體類

這里提供通用的返回方法與項(xiàng)目實(shí)體類。

由于篇幅原因,這里不提供get/set方法,需要源代碼請使用coding下載。

4.2.1 Authentication

該類獲取Application.yml中提供的常量。

4.2.2 Result

用于提供統(tǒng)一返回格式。

public class Result {
    private Integer code;
    private String message;
    private Object data;

4.3 Service

UserService類查詢賬號密碼,驗(yàn)證賬號密碼是否正確,這里不連接數(shù)據(jù)庫,只提供模擬查詢驗(yàn)證,各位可再基礎(chǔ)上自行拓展。

@Component("userService")
public class UserService implements UserDetailsService {
    Logger logger = LoggerFactory.getLogger(getClass());
    /**
     * spring提供的加密算法,該算法只能驗(yàn)證不能解密
     */
    @Autowired
    PasswordEncoder passwordEncoder;
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        logger.info("輸入的賬號: " + username);
        if(!"CloudStudio".equalsIgnoreCase(username)) {
            throw new UsernameNotFoundException("用戶名或密碼錯誤");
        }
        String password = passwordEncoder.encode("1234");
        //模擬返回權(quán)限
        return new User(username, password, AuthorityUtils.commaSeparatedStringToAuthorityList("admin"));
    }
}

4.4 SpringSecurityConfig(核心)

該類為SpringSecurity的核心類:

configure(AuthenticationManagerBuilder auth):方法用于指定驗(yàn)證賬號密碼的方法。也就是調(diào)用上文的UserService。
configure(WebSecurity web):用于放行靜態(tài)資源,靜態(tài)資源可以不用驗(yàn)證賬號。
configure(HttpSecurity http):用于配置什么接口驗(yàn)證賬號,什么接口可以匿名訪問,同時可以指定自定義過濾器,這里指定了AuthenticationSuccessHandler /AuthenticationFailureHandler,用于驗(yàn)證成功/失敗的處理。同時在此處,還可以添加驗(yàn)證碼過濾器,token過濾器器等,擴(kuò)展知識可以參考博主SpringSecurity/Oauth專欄。

@Configuration
@EnableWebSecurity
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
    @Autowired
    UserDetailsService userDetailsService;
    @Autowired
    private AuthenticationSuccessHandler customAuthenticationSuccessHandler;
    @Autowired
    private AuthenticationFailureHandler customAuthenticationFailureHandler;
    @Autowired
    private Authentication authentication;
    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
    /**
     * 加入驗(yàn)證用戶的service
     * @param auth
     * @throws Exception
     */
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService);
    }
    /**
     * 核心方法,配置什么方法可以不通過鑒權(quán)就能訪問,并指定一系列的過濾器
     *
     * @param http
     * @throws Exception
     */
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // 表單登錄方式
        http.formLogin()
            .loginPage(authentication.getLoginPage())
            // 登錄表單提交處理url, 默認(rèn)是/login
            .loginProcessingUrl(authentication.getLoginProcessingUrl())
            //驗(yàn)證賬號
            .usernameParameter(authentication.getUsername())
            //驗(yàn)證密碼
            .passwordParameter(authentication.getPassword())
            //指定訪問成功/失敗的處理類
            .successHandler(customAuthenticationSuccessHandler)
            .failureHandler(customAuthenticationFailureHandler)
            .and()
            .authorizeRequests()
            ///login/page所有人都能訪問,要不沒法登錄
            .antMatchers(authentication.getLoginPage()).permitAll()
            //其余接口必須驗(yàn)證用戶才能訪問
            .anyRequest().authenticated()
        ;
    }
    /**
     * 靜態(tài)資源不需要鑒權(quán)
     * @param web
     */
    @Override
    public void configure(WebSecurity web){
        web.ignoring().antMatchers("/dist/**", "/modules/**", "/plugins/**");
    }
}

4.5 CustomAuthenticationSuccessHandler /CustomAuthenticationFailureHandler

當(dāng)驗(yàn)證成功和失敗,調(diào)用該類,鑒于目前開發(fā)都是前后端分離,前端需根據(jù)后端返回處理邏輯,此處配置為提供json返回,如果刪除該類,會再在頁面拋出異常而不是跳轉(zhuǎn)頁面。

@Component("customAuthenticationSuccessHandler")
public class CustomAuthenticationSuccessHandler implements AuthenticationSuccessHandler {
    @Override
    public void onAuthenticationSuccess(HttpServletRequest request,
        HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
        // 認(rèn)證成功后,響應(yīng)JSON字符串
        Result result = Result.ok("認(rèn)證成功");
        //此處指定返回對象為json,也可以改為返回值
        response.setContentType("application/json;charset=UTF-8");
        response.getWriter().write(result.toJsonString());
    }
}
@Component("customAuthenticationFailureHandler")
public class CustomAuthenticationFailureHandler implements AuthenticationFailureHandler {
    @Override
    public void onAuthenticationFailure(HttpServletRequest request,
            HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException {
        // 認(rèn)證失敗響應(yīng)JSON字符串,
        Result result = Result.build(HttpStatus.UNAUTHORIZED.value(), exception.getMessage());
        //此處指定返回對象為json,也可以改為返回值
        response.setContentType("application/json;charset=UTF-8");
        response.getWriter().write(result.toJsonString());
    }
}

4.6 application.yml

springboot配置,配置跳轉(zhuǎn)頁面等。

server:
  port: 80
spring:
  thymeleaf:
    cache: false #關(guān)閉thymeleaf緩存
authentication:
  loginPage: /login/page
  loginProcessingUrl: /login/form # 登錄表單提交處理的url
  username: name # 登錄表單提交的用戶名的屬性名
  password: pwd  # 登錄表單提交的密碼的屬性名
  staticPaths: # 靜態(tài)頁面放棄攔截
  - /dist/**
  - /modules/**
  - /plugins/**

4.7 Controller

controller作為對外訪問入口,同時跳轉(zhuǎn)訪問thymeleaf頁面。

@Controller
public class CustomLoginController {
    /**
     * 訪問thymeleaf頁面
     * @return
     */
    @RequestMapping("/login/page")
    public String toLogin() {
        return "login";
    }
}
@Controller
public class MainController {
    @RequestMapping({"/index", "/", ""})
    public String index() {
        return "index";
    }
}

4.8驗(yàn)證

啟動項(xiàng)目后,訪問 localhost ,通過配置會跳轉(zhuǎn)到/login/page,此時執(zhí)行登錄即可。

當(dāng)訪問成功/失敗會跳轉(zhuǎn)頁面并拋出異常, application/json 這種返回方式適用于前后端分離,前端通過后端返回執(zhí)行邏輯。

如果刪除CustomAuthenticationSuccessHandler /CustomAuthenticationFailureHandler ,就會在頁面拋出異常,而不是跳轉(zhuǎn)頁面。

5.總結(jié)

目前博主已經(jīng)體驗(yàn)了很久Cloud Studio,在使用過程中有以下的觀點(diǎn):

  • Cloud Studio提供了大量的語言模板,如果您是全棧愛好者,有時候還想玩玩python,那么Cloud Studio不用您安裝各種環(huán)境,開箱及用。
  • Cloud Studio 作為 Web IDE/在線 IDE/Cloud IDE,和本地 IDE 相比具有以下優(yōu)勢:無需安裝,跨平臺,只要有瀏覽器就可以使用;預(yù)置常用環(huán)境,無需手動安裝;支持創(chuàng)建網(wǎng)頁預(yù)覽,在線開發(fā)調(diào)試,節(jié)省電腦資源,Cloud Studio運(yùn)行速度不和硬件鉤掛,多年前老電腦也能流暢運(yùn)行。
  • 提供求助場外觀眾功能,可以請到各種大神為您現(xiàn)場辦公。.
  • 提供云部署套件,配合騰訊云服務(wù)+coding代碼倉庫,中小企業(yè)輕松落地devops生態(tài)。
  • 持續(xù)的功能擴(kuò)展,AI編程等功能不定時迭代。

到是在使用過程博主還想提一些建議:

  • Cloud Studio風(fēng)格目前與vs code很貼近,那么后端使用idea的小伙伴可能有點(diǎn)不太熟悉,未來能否提供多種風(fēng)格供使用者選擇。
  • 不能配置項(xiàng)目結(jié)構(gòu),后端父子依賴工程構(gòu)建比較復(fù)雜。

先階段Cloud Studio免費(fèi)試用,Cloud Studio 團(tuán)隊基于老用戶使用體驗(yàn)角度和新用戶上手成本考慮,現(xiàn)實(shí)行每月贈送 3000 分鐘的工作空間免費(fèi)時長 ,具體內(nèi)容可參考產(chǎn)品文檔。小伙伴們還不去體驗(yàn)一下嗎。點(diǎn)我點(diǎn)我

到此這篇關(guān)于使用Cloud Studio構(gòu)建SpringSecurity權(quán)限框架(騰訊云 Cloud Studio 實(shí)戰(zhàn)訓(xùn)練營)的文章就介紹到這了,更多相關(guān)SpringSecurity權(quán)限框架內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一段代碼搞懂關(guān)于Java中List、Set集合及Map的使用

    一段代碼搞懂關(guān)于Java中List、Set集合及Map的使用

    這篇文章主要介紹了關(guān)于Java中List、Set集合及Map的使用及l(fā)ist,set和map三者的區(qū)別介紹,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-08-08
  • SpringBoot+Redis Bitmap實(shí)現(xiàn)活躍用戶統(tǒng)計

    SpringBoot+Redis Bitmap實(shí)現(xiàn)活躍用戶統(tǒng)計

    Redis的Bitmap數(shù)據(jù)結(jié)構(gòu)是一種緊湊的位圖,它可以用于實(shí)現(xiàn)各種場景,其中統(tǒng)計活躍用戶是一種經(jīng)典的業(yè)務(wù)場景,下面我們就來學(xué)習(xí)一下SpringBoot如何利用Redis中的Bitmap實(shí)現(xiàn)活躍用戶統(tǒng)計吧
    2023-11-11
  • Springboot項(xiàng)目的服務(wù)器部署與發(fā)布方式

    Springboot項(xiàng)目的服務(wù)器部署與發(fā)布方式

    本文記錄了將Springboot項(xiàng)目部署到服務(wù)器并發(fā)布的過程,包括在IDEA中打包、選擇服務(wù)器、連接服務(wù)器、安裝環(huán)境、上傳jar包、配置環(huán)境變量以及運(yùn)行項(xiàng)目等步驟
    2025-03-03
  • Java內(nèi)部類之間的閉包和回調(diào)詳解

    Java內(nèi)部類之間的閉包和回調(diào)詳解

    相信閉包和回調(diào)對每位學(xué)習(xí)Java的人來說都不陌生,那么今天小編和大家分享一篇關(guān)于Java內(nèi)部類之間的閉包和回調(diào),有需要的可以參考借鑒。
    2016-09-09
  • JAVA JDK8 List獲取屬性列表

    JAVA JDK8 List獲取屬性列表

    今天小編就為大家分享一篇關(guān)于JAVA JDK8 List獲取屬性列表,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • SpringBoot如何整合redis實(shí)現(xiàn)過期key監(jiān)聽事件

    SpringBoot如何整合redis實(shí)現(xiàn)過期key監(jiān)聽事件

    這篇文章主要介紹了SpringBoot如何整合redis實(shí)現(xiàn)過期key監(jiān)聽事件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • java中的hashCode方法小例子

    java中的hashCode方法小例子

    這篇文章主要介紹了java中的hashCode方法小例子,有需要的朋友可以參考一下
    2013-12-12
  • java中生成任意之間數(shù)的隨機(jī)數(shù)詳解

    java中生成任意之間數(shù)的隨機(jī)數(shù)詳解

    這篇文章主要介紹了java中生成任意之間數(shù)的隨機(jī)數(shù)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • SpringBoot中集成串口通信的項(xiàng)目實(shí)踐

    SpringBoot中集成串口通信的項(xiàng)目實(shí)踐

    本文主要介紹了SpringBoot中集成串口通信,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • java使用rmi傳輸大文件示例分享

    java使用rmi傳輸大文件示例分享

    由于在rmi中無法傳輸文件流,可以先用FileInputStream將文件讀到一個Byte數(shù)組中,然后把這個Byte數(shù)組作為參數(shù)傳進(jìn)RMI的方法中,然后在服務(wù)器端將Byte數(shù)組還原為outputStream,這樣就能通過RMI 來傳輸文件了,下面我們來看實(shí)例
    2014-01-01

最新評論