当前位置: 首页 > article >正文

spring-security(两种权限控制方式)

案例(写死的用户密码)

package com.zking.security.service;

import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 登录服务类,实现Spring Security的UserDetailsService接口
 */
@Service
public class LoginService implements UserDetailsService {
    /**
     * 根据用户名加载用户信息
     *
     * @param username 用户名
     * @return UserDetails对象,包含用户信息
     * @throws UsernameNotFoundException 如果用户不存在,则抛出此异常
     */
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        // 检查用户名是否匹配预设值,如果不匹配则抛出异常
        if (!"jack".equals(username)){
            throw new UsernameNotFoundException("用户名不存在");
        }
        // 预设的用户密码
        String pwd = "$2a$10$k8GypMMYDjEr804BC.jR0O.ZSxWn082oWgvuilomBiN31ajb43XVO";
        // 用户角色及权限
        //检查用户名是否为 jack:检查传入的用户名是否为 "jack"。
        //如果不是 "jack",则抛出 UsernameNotFoundException 异常。
        //如果是 "jack",则继续执行。
        //一个用户拥有一个或多个角色,每个角色可能拥有多个权限。
        List<GrantedAuthority> authorities=AuthorityUtils.commaSeparatedStringToAuthorityList("sys:prod:list,ROLE_jack

http://www.kler.cn/a/388594.html

相关文章:

  • Appium配置2024.11.12
  • 界面控件Kendo UI for Angular中文教程:如何构建带图表的仪表板?(一)
  • [ 网络安全介绍 5 ] 为什么要学习网络安全?
  • Axure网络短剧APP端原型图,竖屏微剧视频模版40页
  • WebRTC API分析
  • 【Linux】TCP原理
  • Qt 界面无边框 拖拽移动 问题处理:setMouseTracking(true)无法跟踪鼠标事件
  • <项目代码>YOLOv8 玉米地杂草识别<目标检测>
  • unity3d————四元数,欧拉角的互相转换的初步了解
  • 【bayes-Transformer-GRU多维时序预测】多变量输入模型。matlab代码,2023b及其以上
  • Bert框架详解(上)
  • EM是什么?如何修复EM violation?
  • arm中内存读取延迟性能测试
  • goframe开发一个企业网站 rabbitmq队例15
  • 【网络面试篇】TCP 相关——重传机制、滑动窗口、流量控制、拥塞控制、Keep-Alive、KeepAlive
  • 优选算法 - 1 ( 双指针 移动窗口 8000 字详解 )
  • SpringFramework
  • VMware调整窗口为可以缩小但不改变显示内容的大小
  • 如何基于redis记录调用大模型问答的统一注册服务
  • Vue3 实现拖拽小图片覆盖大图片并下载合并后的图片
  • Flutter运行App时出现“Running Gradle task ‘assembleDebug“问题解决
  • Vue2 doc、excel、pdf、ppt、txt、图片以及视频等在线预览
  • 信创异构环境下审视云原生二层和三层容器网络
  • 共享汽车管理:SpringBoot框架的高效实现
  • Ubuntu 18在线安装Docker 实战 2024年11月
  • 访谈Sam Altman:他再次阐述对一个人AI公司的定义以及GPT系列规划