Cas 服務器 爲Service定義UI

Cas服務器容許用戶爲每一個Service自定義登錄等UI外觀,但須要尊着Cas定於的規則:css

1、爲Service配置theme(主題)html

在《Cas 服務器 Service(Cas客戶端)註冊信息維護》中的 TEST-10000003.json 配置中增長  "theme": "test"web

 

以上配置爲該Service指定了要應用的主題爲test,因此當以http://localhost:8081爲域名的Cas客戶端來請求登錄時,將展現test主題登錄UI。

2、創建theme(主題)資源json

 如今已經假定test主題,下面就要把該主題實現出來。要實現cas theme先要了解cas對theme實現的基本規則:瀏覽器

一、css、js等theme用到的靜態資源,應放置在:src\main\resources\static\themes\主題名稱目錄下服務器

二、theme用到的web視圖資源,應放置在:src\main\resources\templates\主題名稱目錄下less

三、theme配置文件,應放置在:src\main\resources\下,並命名爲:主題名稱.properties(或主題名稱.yml)post

注:只要用戶按照上述規則完成資源文件的實現後,cas服務器將自動加載對應theme資源應用到Service。測試

3、編寫theme資源文件內容ui

一、theme配置文件(test.properties)內容

css.file=/themes/test/css/test.css
pageTitle=Test主題演示

二、css樣式表(test.css)內容

h3 {
color: red;
}

三、Web視圖(casLoginView.html)內容

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <title th:text="${#themes.code('pageTitle')}"></title>
    <link rel="stylesheet" th:href="@{${#themes.code('css.file')}}" />
</head>

<body>
<h3 th:text="${#themes.code('pageTitle')}"></h3>
<div>
    <form method="post" th:object="${credential}">
        <div th:if="${#fields.hasErrors('*')}"><span th:each="err : ${#fields.errors('*')}" th:utext="${err}" />
        </div>
        <h4 th:utext="#{screen.welcome.instructions}"></h4>
        <section class="row">
            <label for="username" th:utext="#{screen.welcome.label.netid}" />
            <div th:unless="${openIdLocalId}">
                <input class="required" id="username" size="25" tabindex="1" type="text" th:disabled="${guaEnabled}" th:field="*{username}" th:accesskey="#{screen.welcome.label.netid.accesskey}" autocomplete="off" th:value="casuser" />
            </div>
        </section>
        <section class="row">
            <label for="password" th:utext="#{screen.welcome.label.password}" />
            <div>
                <input class="required" type="password" id="password" size="25" tabindex="2" th:accesskey="#{screen.welcome.label.password.accesskey}" th:field="*{password}" autocomplete="off" th:value="Mellon" />
            </div>
        </section>
        <section>
            <input type="hidden" name="execution" th:value="${flowExecutionKey}" />
            <input type="hidden" name="_eventId" value="submit" />
            <input type="hidden" name="geolocation" />
            <input class="btn btn-submit btn-block" name="submit" accesskey="l" th:value="#{screen.welcome.button.login}" tabindex="6" type="submit" />
        </section>
    </form>
</div>
</body>

</html>

 

注:關於cas web視圖的語法,不在該文範圍以內。要了解具體語法涵義,請自行百度。

4、運行測試

 

注:須要Cas客戶端進行訪問測試,單純瀏覽器訪問沒法呈現該主題。

相關文章
相關標籤/搜索