java spring boot 权限认证总结瞎记一通,各种 方案。附近如何运行jar包。和如何读配文件

在正式笔之 前先来思考如何将java 的包打包成jar 包同,运行时指定配置,这样运行,

 以上问题有空在来研究,有空在来补这个文档

 

首先呢,先来说说Session 怎么使用,这个在sping boot 很简单 ,就是通过属性来操作获取和设置

session 使用

import javax.servlet.http.HttpSession;

// ...

@PostMapping("/login")
public String login(@RequestParam String username, @RequestParam String password, HttpSession session) {
    // 假设验证了用户名和密码
    if (isValidUser(username, password)) {
        // 将用户信息存入Session
        session.setAttribute("user", username);
        return "redirect:/home";
    } else {
        return "login";
    }
}

@GetMapping("/home")
public String home(HttpSession session, Model model) {
    // 从Session中获取用户信息
    String username = (String) session.getAttribute("user");
    if (username != null) {
        model.addAttribute("username", username);
        return "home";
    } else {
        return "redirect:/login";
    }
} 

session 也可以结合本地缓存

spring:
  session:
    store-type: redis
  redis:
    host: localhost
    port: 6379

然后用redis 来记录 session

@GetMapping("/setSessionId")
public String setSessionId(HttpSession session, HttpServletResponse response) {
    // 生成一个新的Session ID
    session.invalidate();
    session = request.getSession(true);

    // 将新的Session ID发送给客户端(这里通过响应头)
    response.setHeader("X-Session-Id", session.getId());

    return "setSessionId";
}

@GetMapping("/getSessionId")
public String getSessionId(@RequestHeader(value = "X-Session-Id", required = false) String sessionId, Model model) {
    if (sessionId != null) {
        // 使用Session ID从服务器获取Session
        HttpSession session = request.getSession(false);
        if (session != null && session.getId().equals(sessionId)) {
            model.addAttribute("sessionId", sessionId);
            return "getSessionId";
        }
    }
    return "error";
}

  

jwt  使用   首先这个也是一个依融包,先导入后增加一个配置,然后配置挡截器类

这个先略,稍后总结

 

 Spring Boot 中集成 Spring Security 进行基本的身份认证

如果我们是用idea 新建的springboot 一开始就勾选了  Spring Security 。那么在构建时idea 会帮我做一些默认配置,

所以一登陆就开始认证了,新增一下用户名为user   密码在控制显示是一个uuid 当然呢我们更想自己配置细节

$ecurityProperties
初始化配置,配置了默认的用户名(user)和密码(uuid)。在application.properties中配置自定义用户名和密码。
例如:
spring.security.user.name=myusername
spring.security.user.password=mypassword

  

 

配置路径上下文
server.servlet.context-path=/myapp

 

 

通过内存来管理

 

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;

@Configuration
public class WebSecurityConfig {

    @Bean
    public UserDetailsService userDetailsService() {
        // 创建基于内存的用户信息管理器
        InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
        manager.createUser(User.withDefaultPasswordEncoder().username("user").password("password").roles("USER").build());
        return manager;
    }
}

 

posted @ 2024-06-27 10:08  谢双元小号  阅读(37)  评论(0)    收藏  举报