Оглавление
(1) @prifileмодификация
@Configuration@Profile("prod")publicclassJndiDataConfig{@Bean(destroyMethod="")public DataSource dataSource()throws Exception {
Context ctx =newInitialContext();return(DataSource) ctx.lookup("java:comp/env/jdbc/datasource");}}
(1) активировать профиль в режиме файла конфигурации
Определите, какая среда в настоящее время используется.Значение среды здесь соответствует значению after-in application-prod.properties, которое согласовано SpringBoot.Добавьте следующую конфигурацию в resources / application.properties. Следует отметить, что значение spring.profiles.active должно быть таким же, как и@ProfileМетки в аннотациях остаются неизменными.
spring.profiles.active=dev
Кроме того, то же самое можно настроить и в resources / application.yml, эффект такой же:
spring:
profiles:
active: dev
(2) @profileспособ модификации
@ConfigurationpublicclassAppConfig{@Bean("dataSource")@Profile("dev")public DataSource standaloneDataSource(){returnnewEmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.HSQL).addScript("classpath:com/bank/config/sql/schema.sql").addScript("classpath:com/bank/config/sql/test-data.sql").build();}@Bean("dataSource")@Profile("prod")public DataSource jndiDataSource()throws Exception {
Context ctx =newInitialContext();return(DataSource) ctx.lookup("java:comp/env/jdbc/datasource");}}
(2) активировать профиль из командной строки
При запуске после упаковки добавьте параметры:
java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev;
(3)@profileаннотация модификации
@ProfileАннотации могут быть определены поверх других аннотаций для создания пользовательских аннотаций сцены. Это создает@DevАннотация, аннотация может идентифицировать bean-компонент, используемый в@DevЭта сцена. Больше не нужно использовать в будущем@Profile(“dev”)Таким образом код можно упростить.
Spring Security Login
Let’s look at the login workflow:
Let’s take a quick look at the workflow:
Инструкции по аннотации @Profile
@profileРоль аннотации состоит в том, чтобы указать класс или метод, которые будут действовать в определенной среде профиля, любой@Componentили же@ConfigurationАннотированные классы могут использоваться@Profileаннотация.
Требования:
@Component
или же@Configuration
Аннотированные классы могут использоваться@profile
@Profile
Необходимо указать строку, среду, в которой соглашение вступает в силу
Файл конфигурации ресурса
В дополнение к application.properties файл конфигурации ресурсов Springboot также может иметь соответствующий файл ресурсов application- {profile} .properties.Предположим, что рабочая среда приложения: dev, test, prod
Затем мы можем добавить 4 файла конфигурации:
- applcation.properties-public конфигурация
- application-dev.properties-конфигурация среды разработки
- конфигурация среды application-test.properties-test
- конфигурация среды application-prod.properties-production
Для активации профиля в файле applcation.properties также можно активировать различные файлы конфигурации свойств:spring.profiles.active = test
Default Security Login Page
By default, Spring security will show the default login page. If you don’t do any customization or configuration, you might see a similar login page on your application.
Most application will like to have their own customize login page. Spring security provides a flexible option to configure custom login page for our application. The next section will cover the customization and configuration of the login page.
Активация профиля
При фактическом использовании в аннотациях указано несколько сред, таких как prod, test и qa. Какой профиль используется во время выполнения, контролируется spring.profiles.active. Ниже описаны два метода: режим файла конфигурации и режим командной строки.
Многопрофильные файлы ресурсов
В дополнение к аннотации @profile вы можете указать, в какую среду внедряются определенные методы и классы. Изоляция среды Springboot также может использовать несколько файлов ресурсов для настройки некоторых параметров.
Примеры использования
Ниже приведен пример нескольких файлов конфигурации ресурсов, которые в основном различают среду разработки dev и онлайн-среду prod.
Создайте новый интерфейс в Sound.java на уровне контроллера, чтобы возвращать информацию в файле конфигурации: имя и локальный.
@Controller@RequestMapping("/sound")publicclassSound{@Value("${com.name}")private String name;@Value("${com.location}")private String location;@RequestMapping("hello")@ResponseBodypublic String sound1(){
System.out.println(name "hello Spring Boot, " location);return name ",hello Spring Boot! " location;}}
Содержимое файла application.properties выглядит следующим образом:
## Свойства активации файла конфигурации для нескольких сред
spring.profiles.active=prod
Содержимое файла application-dev.properties выглядит следующим образом:
# Сервисный порт
server.port=1111
# Вы можете определить некоторые используемые вами свойства, а затем передать@Value("$ {название свойства}}")Аннотация для загрузки соответствующих свойств конфигурации
com.name=DEV
com.location=Beijing
Содержимое файла application-prod.properties выглядит следующим образом:
server.port=2222
# Вы можете определить некоторые используемые вами свойства, а затем передать@Value("$ {название свойства}}")Аннотация для загрузки соответствующих свойств конфигурации
com.name=Prod
com.location=Hubei
1. Login Controller
With the above configuration, we also need the login controller to maps GET /login to our controller. Our controller will return the custom login page. Here is the login page controller for your reference:
package com.javadevjournal.web.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class LoginPageController {
@GetMapping("/login")
public String login(){
return "account/login";
}
}
There is nothing special about the spring security login controller.
2. Login Page
We need to create a login page as per our design. Our controller will return this page. I am using Thymeleaf to build the page, but you can use any other templating engine of your choice.
1. Landing Page for Successful Authentication
After the successful authentication, we want to redirect customer to the home screen. Spring security provide flexible way to do this.
Test Login Process
It’s time to test the login process. Build and run the application. Once the application start, we will run the following test cases.
- Directly access secure URL (e.g. any URL with pattern
/account/**
), Spring security will force the login by redirecting us to /login page. - Acess the non-secure URL. We should be able to access those with no issue.
- try login with a valid and invalid credentials.
Let’s look at each test case:
Spring Security Login Workflow
We will enhance our login process in this series (Will add remember me service etc.) but I like to revisit the login workflow
Let’s talk about the above workflow:
Get span value with no class name using vba
If you actually mean the “High” then you can use a CSS selector.
Debug.Print html.querySelector("span[data-toggle=dropdown]").innerText
CSS query using selector:
This applies a CSS selector of span[data-toggle=dropdown]
, which is element(s) with span
tag having attribute data-toggle
with value of dropdown
.
I have used querySelector
, which only returns the first match, as your HTML shown only has one matching element.
If you have more than one matching element then you will need the querySelectorAll
method, which returns a nodeList
of matching elements, and then index into that 0-based nodeList
using the appropriate index e.g.
html.querySelectorAll("span[data-toggle=dropdown]").item(0).innerText
You would traverse the .Length
of the nodeList
to get all items e.g.
Dim aNodeList As Object, i As Long, erow As Long, count As Long
Set aNodeList = html.querySelectorAll("span[data-toggle=dropdown]")
For i = 0 To aNodeList.Length -1
erow = Sheets("Exec").Cells(Rows.count, 1).End(xlUp).Offset(1, 0).Row
Sheets("Exec").Cells(erow, 1) = aNodeList.item(i).innerText
count = count 1
Next i
Summary
In this article, we discuss the spring security login, we discuss the distinct feature of the login process. To summarize we discuss following points in this post.
- How Spring security login process works?
- Configure and use custom login page in spring security.
- How to configure the success and failure process for our application?
- In the last section, we covered the spring security login workflow.
The source code for this article is available on the GitHub.