Cách hiển thị thông tin người dùng đã đăng nhập trong html

Trong hướng dẫn nhanh này, chúng ta sẽ xem cách chúng ta có thể hiển thị thông tin người dùng đã đăng nhập trong Thymeleaf

Chúng tôi sẽ mở rộng dự án mà chúng tôi đã xây dựng trong bài viết Spring Security with Thymeleaf. Đầu tiên, chúng tôi sẽ thêm một mô hình tùy chỉnh để lưu trữ thông tin người dùng và dịch vụ để truy xuất chúng. Sau đó, chúng tôi sẽ hiển thị nó bằng Phương ngữ bảo mật mùa xuân từ mô-đun Thymeleaf Extras

2. Triển khai chi tiết người dùng

UserDetails là một giao diện từ Spring Security được sử dụng để chứa thông tin người dùng không liên quan đến bảo mật

Chúng tôi sẽ tạo triển khai giao diện UserDetails với một số trường tùy chỉnh làm mô hình để lưu trữ chi tiết người dùng đã xác thực của chúng tôi. Tuy nhiên, để xử lý ít trường và phương thức hơn, chúng tôi sẽ mở rộng triển khai khung mặc định, lớp Người dùng

public class CustomUserDetails extends User {

    private final String firstName;
    private final String lastName;
    private final String email;

    private CustomUserDetails(Builder builder) {
        super(builder.username, builder.password, builder.authorities);
        this.firstName = builder.firstName;
        this.lastName = builder.lastName;
        this.email = builder.email;
    }

    // omitting getters and static Builder class
}

3. Chi tiết người dùng Triển khai dịch vụ

Giao diện phương thức đơn UserDetailsService của khung chịu trách nhiệm tìm nạp UserDetails trong quá trình xác thực

Do đó, để có thể tải CustomUserDetails của chúng tôi, chúng tôi sẽ cần triển khai giao diện UserDetailsService. Ví dụ của chúng tôi, chúng tôi sẽ mã hóa cứng và lưu trữ chi tiết người dùng trong Bản đồ có tên người dùng làm khóa

@Service
public class CustomUserDetailsService implements UserDetailsService {

    private final PasswordEncoder passwordEncoder;
    private final Map userRegistry = new HashMap<>();

    // omitting constructor

    @PostConstruct
    public void init() {
        userRegistry.put("user", new CustomUserDetails.Builder().withFirstName("Mark")
          .withLastName("Johnson")
          .withEmail("[email protected]")
          .withUsername("user")
          .withPassword(passwordEncoder.encode("password"))
          .withAuthorities(Collections.singletonList(new SimpleGrantedAuthority("ROLE_USER")))
          .build());
        userRegistry.put("admin", new CustomUserDetails.Builder().withFirstName("James")
          .withLastName("Davis")
          .withEmail("[email protected]")
          .withUsername("admin")
          .withPassword(passwordEncoder.encode("password"))
          .withAuthorities(Collections.singletonList(new SimpleGrantedAuthority("ROLE_ADMIN")))
          .build());
    }

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        CustomUserDetails userDetails = userRegistry.get(username);
        if (userDetails == null) {
            throw new UsernameNotFoundException(username);
        }
        return userDetails;
    }
}

Ngoài ra, để triển khai phương thức loadUserByUsername() bắt buộc, chúng tôi đang tìm nạp đối tượng CustomUserDetails tương ứng từ Bản đồ đăng ký theo tên người dùng. Tuy nhiên, thông tin chi tiết về người dùng sẽ được lưu trữ và truy xuất từ ​​kho lưu trữ trong môi trường sản xuất

4. Cấu hình bảo mật mùa xuân

Đầu tiên, chúng ta cần thêm UserDetailsService trong cấu hình của Spring Security, cấu hình này sẽ được kết nối với triển khai CustomUserDetailsService. Hơn nữa, chúng ta sẽ đặt nó trên phiên bản HttpSecurity thông qua phương thức tương ứng. Phần còn lại chỉ là cấu hình bảo mật tối thiểu yêu cầu người dùng phải được xác thực và định cấu hình các điểm cuối/đăng nhập,/đăng xuất và/chỉ mục

@Configuration
@EnableWebSecurity
public class SecurityConfiguration {

    private final UserDetailsService userDetailsService;

     // omitting constructor

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http.userDetailsService(userDetailsService)
            .authorizeRequests()
            .anyRequest()
            .authenticated()
            .and()
            .formLogin()
            .loginPage("/login")
            .permitAll()
            .successForwardUrl("/index")
            .and()
            .logout()
            .permitAll()
            .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
            .logoutSuccessUrl("/login");
        return http.build();
    }
}

5. Hiển thị thông tin người dùng đã đăng nhập

Mô-đun Thymeleaf Extras cấp quyền truy cập vào đối tượng Xác thực và với Phương ngữ bảo mật, chúng tôi có thể hiển thị thông tin người dùng đã đăng nhập trên các trang Thymelef

Đối tượng CustomUserDetails có thể truy cập thông qua trường chính trên đối tượng Xác thực. Chẳng hạn, chúng ta có thể truy cập trường FirstName bằng giây. xác thực =”chính. họ"




Welcome to Spring Security Thymeleaf tutorial


    

Welcome

Spring Security Thymeleaf tutorial

Text visible to user.
Text visible to admin.
Text visible only to authenticated users.
Authenticated username:
Authenticated user's firstName:
Authenticated user's lastName:
Authenticated user's email:
Authenticated user roles:

Ngoài ra, một cú pháp tương đương để viết các biểu thức Phương ngữ bảo mật mà không cần giây. thuộc tính xác thực đang sử dụng Ngôn ngữ biểu thức mùa xuân. Do đó, chúng tôi có thể hiển thị trường FirstName bằng định dạng Ngôn ngữ biểu thức Spring nếu chúng tôi cảm thấy thoải mái hơn với nó

6. Sự kết luận

Trong bài viết này, chúng ta đã thấy cách chúng ta có thể hiển thị thông tin người dùng đã đăng nhập trong Thymeleaf bằng cách sử dụng sự hỗ trợ của Spring Security trong ứng dụng Spring Boot

Làm cách nào tôi có thể thấy tên người dùng đã đăng nhập trong HTML?

php session_start(); if($_SESSION['logged']==true){ echo $_SESSION["username"]; echo 'Logout'; } elseif($_SESSION['logged']==false) echo 'Làm cách nào tôi có thể thấy tên người dùng đã đăng nhập trong PHP?
đăng nhập. php .
request_once 'conn. php';
phiên_bắt đầu();
if(ISSET($_POST['đăng nhập'
$username = $_POST['username'];
$password = $_POST['password'];
$query = mysqli_query($conn, "SELECT * FROM `user` WHERE `username` = '$username' AND `password` = '$password'") hoặc die(mysqli_error());
$fetch = mysqli_fetch_array($query);

Làm cách nào để truy xuất dữ liệu từ cơ sở dữ liệu của một người dùng cụ thể sau khi đăng nhập bằng PHP?

Truy xuất hoặc tìm nạp dữ liệu từ cơ sở dữ liệu trong PHP .
CHỌN (các) tên_cột TỪ_tên_bảng
$query = mysql_query("select * from tablename", $connection);
$connection = mysql_connect("localhost", "root", "");
$db = mysql_select_db("công ty", kết nối $);
$query = mysql_query("chọn * từ nhân viên", $connection);