Miért tölti be a CSS file tartalmát szövegként ha a bejelentkezés gombra kattintok?

0 értékelés
161 megtekintés
nemad (8 pont) kérdezte Már 13.
nemad szerkesztett Már 14.

Update:

A Spring Boot II. 17-es videójánál tartok, és egy olyan hibába botlottam, hogy amikor egy regisztrált felhasználóval be szeretnék jelentkezni, akkor ahelyett, hogy átirányítana az index oldalra a static/css/blog.css file tartalmát írja ki szövegesen.

Letöltöttem a videóhoz kapcsolód github repot is, csak a properties filet módosítottam a Heroku adatokkal, akkor működött. Viszont ahogy átírtam a pom.xml-t az alábbiakra:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>2.1.3.RELEASE</version>

<relativePath /> <!-- lookup parent from repository -->

</parent>

<groupId>hu.sec</groupId>

<artifactId>sec</artifactId>

<version>0.0.1-SNAPSHOT</version>

<name>Sec</name>

<description>sec</description>

<properties>

<java.version>11</java.version>

</properties>

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-security</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-test</artifactId>

<scope>test</scope>

</dependency>

<dependency>

<groupId>org.springframework.security</groupId>

<artifactId>spring-security-test</artifactId>

<scope>test</scope>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-thymeleaf</artifactId>

</dependency>

<dependency>

<groupId>nz.net.ultraq.thymeleaf</groupId>

<artifactId>thymeleaf-layout-dialect</artifactId>

</dependency>

<dependency>

<groupId>org.thymeleaf.extras</groupId>

<artifactId>thymeleaf-extras-springsecurity5</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-mail</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-jpa</artifactId>

</dependency>

<dependency>

<groupId>org.postgresql</groupId>

<artifactId>postgresql</artifactId>

<scope>runtime</scope>

</dependency>

</dependencies>

<build>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

</plugin>

</plugins>

</build>

</project>

ismételten nem működik. Viszont ha kitörlöm a main.html fileból az alábbi sort:

<link rel="stylesheet" href="../static/css/blog.css" th:href="@{/css/blog.css}"/>

akkor működik. Nem értem, hogy a Bejelentkezés gomb megnyomása után, hogy kerülök a css fileomba. Ötlet?

2 Válasz

0 értékelés
thedorsan (40 pont) válaszolta meg Már 19.
Nekem akkor volt ilyen problémám mikor a nem megfelelő thymeleaf,spring verziót használtam. Én azzal javítottam ki hogy a videóban használt Spring verziót használtam, mivel az nekem jobban is feküdt. Próbáld meg átállítani.
0 értékelés
varvajk (4 pont) válaszolta meg Júl 28.
varvajk szerkesztett Júl 29.

Igaz én most csak a 11-es videónál járok, de ugyan ebbe ütköztem. Nem vagyok benne teljesen biztos, de amikor a SecurityConf-ban a configure metódusban beállítjuk authorizeRequests-eket, akkor ott tiltunk minden hozzáférést. Én hozzáadtam egy .antMatchers("/css/**").permitAll() sort, hogy a css mappa tartalmát el lehessen érni.

A 11-es videónak megfelelően a configure metódusom így néz ki:

protected void configure(HttpSecurity http) throws Exception {
  http
    .authorizeRequests()
      .antMatchers("/css/**").permitAll()
      .antMatchers("/admin/**").hasRole("ADMIN")
      .anyRequest().authenticated()
      .and()
    .formLogin()
      .loginPage("/login")
      .permitAll()
      .and()
    .logout()
      .logoutSuccessUrl("/login?logout")
      .permitAll();
}

Nekem így már megformázza a bejelentkező részt, és nem a blog.css-re irányít át bejelentkezés után. Lehet, hogy ez így Security Risk, de nálam így működött.

Szerk:
Ha az oldalon az összes css-t engedélyezzük (miért is ne, hiszen csak a formázásért felelősek), akkor a .antMatchers("/css/**").permitAll() sor helyett lehet haszálni a .regexMatchers(".*\\.css$").permitAll() sort.

...