91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

如何對eureka管理界面進行定制化改造

發布時間:2021-07-10 13:46:31 來源:億速云 閱讀:224 作者:chen 欄目:編程語言

這篇文章主要講解了“如何對eureka管理界面進行定制化改造”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何對eureka管理界面進行定制化改造”吧!

前言

在nacos還未面世之前,eureka基本上就是springcloud全家桶體系注冊中心的首選,隨著nacos的橫空出世,越來越多基于springcloud的微服務項目采用nacos作為注冊中心,但這是不是意味著eureka就沒用武之地,其實并不是的,從springcloud截止目前最新版本2020.0.2來看,該版本廢棄了netflix諸如hytrix、ribbon、zuul等組件,而eureka仍然堅挺著,這就說明eureka作為注冊中心,在springcloud體系中仍然發揮著重要的作用。今天就來聊聊如何對eureka管理界面進行定制化改造

自定義登陸頁面

eureka默認是沒有登陸鑒權的,我們可以引入spring security來為eureka添加登陸鑒權功能

1、pom引入spring security

  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

2、在application.yml配置認證用戶名密碼

spring:
  security:
    user:
      # 認證的用戶名
      name: lybgeek
      # 認證的密碼
      password: lybgeek

僅需這兩步,就可以實現一個帶有登陸界面的eureka管理界面。但是spring security的登陸界面css引用

https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css

在網絡不好的情況下,會出現eureka登陸頁面樣式會加載不出來,很影響用戶體驗。因此我們要自定義登陸頁面

ps: spring security的頁面生成,如果感興趣的朋友,可以查看如下類

org.springframework.security.web.server.ui.LoginPageGeneratingWebFilter

它的登陸頁面生成是通過該過濾器渲染生成。

3、自定義登陸頁

因為不是專業前端,因此就把spring security默認頁面拿來簡單修改一下。

<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="">
    <title>請登錄</title>
    <link href="../css/bootstrap.min.css" rel="stylesheet">
    <link href="../css/signin.css" rel="stylesheet">
</head>
<body>
<div class="container">
    <form class="form-signin" method="post" action="/login">
        <!--<h3 class="form-signin-heading">請登錄</h3>-->
        <div class="alert alert-danger" role="alert" id="errorMsgAlert"  ></div>
        <p>
            <label for="username" class="sr-only">用戶名</label>
            <input type="text" id="username" name="username" class="form-control" placeholder="Username" required=""
                   autofocus="">
        </p>
        <p>
            <label for="password" class="sr-only">密碼</label>
            <input type="password" id="password" name="password" class="form-control" placeholder="Password"
                   required="">
        </p>
        <button class="btn btn-lg btn-primary btn-block" type="submit">登錄</button>
    </form>
</div>
</body>
<script src="../js/jquery-3.5.1.min.js"></script>

4、編寫跳轉登陸頁controller

@Controller
@Slf4j
public class LoginController {

    @GetMapping("/toLogin")
    public String login(HttpServletRequest request) {
        return "login";
    }

}

5、配置WebSecurity

@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable()
                .authorizeRequests()
                .antMatchers("/toLogin*","/login*","/css/*","/js/*","/actuator/**").permitAll()
                .and()
                .formLogin()
                .loginPage("/toLogin")
                .permitAll();
        super.configure(http);
    }

注: loginPage("/toLogin")中的toLogin,對應的就是我們寫的LoginController 路由。

此時訪問eureka,可以看到如下頁面

如何對eureka管理界面進行定制化改造

6、配置登陸邏輯以及登陸失敗配置

注: 登陸邏輯直接采用spring security默認的登陸邏輯login,自定義頁面的用戶名name要取名為username,密碼要取名為password,不能自定義,比如password改成pwd,這樣就無法走默認的登陸邏輯。其次因為我們使用自定義登陸頁面,原生自帶校驗失敗的頁面渲染邏輯會失效,因此我們要自定義校驗失敗渲染邏輯

在原先的WebSecurityConfig 加上登陸邏輯配置和登陸失敗配置

@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable()
                .authorizeRequests()
                .antMatchers("/toLogin*","/login*","/css/*","/js/*","/actuator/**").permitAll()
                .and()
                .formLogin()
                .loginPage("/toLogin")
                .loginProcessingUrl("/login").failureUrl("/login/error").permitAll();
        super.configure(http);
    }

}

7、自定義登陸失敗跳轉邏輯controller

@Controller
@Slf4j
public class LoginController {

    @GetMapping("/login/error")
    public String loginError(HttpServletRequest request) {
        AuthenticationException authenticationException = (AuthenticationException) request.getSession().getAttribute(WebAttributes.AUTHENTICATION_EXCEPTION);
        log.info("authenticationException={}", authenticationException);
        String errorMsg;

        if (authenticationException instanceof UsernameNotFoundException || authenticationException instanceof BadCredentialsException) {
            errorMsg = "用戶名或密碼錯誤";
        } else if (authenticationException instanceof DisabledException) {
            errorMsg = "用戶已被禁用";
        } else if (authenticationException instanceof LockedException) {
            errorMsg = "賬戶被鎖定";
        } else if (authenticationException instanceof AccountExpiredException) {
            errorMsg = "賬戶過期";
        } else if (authenticationException instanceof CredentialsExpiredException) {
            errorMsg = "證書過期";
        } else {
            errorMsg = "登錄失敗";
        }
        request.setAttribute("errorMsg",errorMsg);
        return "login";
    }
    }

當用戶名或者密碼錯誤,頁面會有如下提示

如何對eureka管理界面進行定制化改造

eureka管理界面指定環境信息

如何對eureka管理界面進行定制化改造

上圖是eureka原生自帶的環境信息。但我們在日常開發中,有時候會區分dev、sit、uat、prod環境,顯然上圖是沒法滿足我們要求。因此我們可以在application.yml配置如下內容

eureka:
  #此處設置會改變eureka控制臺的顯示
  datacenter: ${DATA_CENTER:LYBGEEK DATA CENTER}
  #此處設置會改變eureka控制臺的顯示
  environment: ${ENV:dev}

此時再查看頁面

如何對eureka管理界面進行定制化改造

自定義管理頁面

eureka的管理界面默認是使用使用freemarker來做模板渲染,其模板頁面在

spring-cloud-netflix-eureka-server-具體版本.jar

如圖

如何對eureka管理界面進行定制化改造

因此我們如果要進行定制,僅需把eureka的模板配置挪到我們代碼的templates中,如圖

如何對eureka管理界面進行定制化改造

然后根據我們的需要,進行修改,比如在本示例中,我就新增了一個登出按鈕和一個版權信息列表,如下圖

如何對eureka管理界面進行定制化改造

如何對eureka管理界面進行定制化改造

在進行定制時,可能踩到的坑

在自定義登陸頁面時,出現如下異常

org.thymeleaf.exceptions.TemplateInputException: Error resolving template [eureka/status], template might not exist or might not be accessible by any of the configured Template Resolvers

解決方案有兩種,一種是在yml文件配置如下內容

spring:
  freemarker:
    prefer-file-system-access: false

一種在把eureka的模板頁面都放置在如下下圖的位置

如何對eureka管理界面進行定制化改造

總結

最近和朋友聊天,他知道我所在的公司注冊中心還是用eureka的時候,他就很詫異說怎么不用nacos,然后我就問他說為什么要用nacos,他給我的答案是現在eureka已經閉源了,nacos現在很火,可以做配置中心也可以做注冊中心,erueka后面基本上不會有人用了。

其實所謂eureka的閉源,是指eureka2版本的閉源,而目前大部分用的eureka都是版本一,我們可以去看netflix對eureka的最近更新

如何對eureka管理界面進行定制化改造

截止當前,他更新時間是11天前,再來看看spring-cloud-netflix-eureka的最近更新

如何對eureka管理界面進行定制化改造

對技術選型,有時候并不是哪個火就用哪個,而是要滿足當前業務需要,還有一點比如你正式環境已經穩定運行項目,你會因為出現更火的技術,就把當前項目技術棧替換掉嗎?我所在項目組,eureka作為注冊中心,因為注冊上去的業務項目就那么一些,用eureka就完全滿足需求了。

我這邊并不是排斥nacos的意思,畢竟nacos也有一些其他注冊中心所不具備的特性,比如動態DNS服務,同時支持AP和CP,nacos2的高性能,這些都是很值得去關注

demo鏈接

https://github.com/lyb-geek/springboot-learning/tree/master/springboot-custom-eureka

感謝各位的閱讀,以上就是“如何對eureka管理界面進行定制化改造”的內容了,經過本文的學習后,相信大家對如何對eureka管理界面進行定制化改造這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

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

AI

普安县| 读书| 平湖市| 龙里县| 哈尔滨市| 钦州市| 阿克陶县| 重庆市| 天祝| 南昌县| 甘谷县| 正安县| 寿宁县| 准格尔旗| 永安市| 长寿区| 广平县| 酒泉市| 汕头市| 白城市| 洛浦县| 江都市| 宜宾市| 罗城| 滁州市| 璧山县| 隆化县| 三明市| 台安县| 鸡泽县| 保定市| 凤冈县| 玛纳斯县| 乌兰察布市| 张家川| 江陵县| 罗源县| 安泽县| 商丘市| 宝山区| 元阳县|