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

找哪个公司做网站推广最好太仓市质监站网址

找哪个公司做网站推广最好,太仓市质监站网址,工信部网站手机备案查询,2345中国最好的网址站[Java实战]Spring Boot 3 整合 Apache Shiro#xff08;二十一#xff09; 引言 在复杂的业务系统中#xff0c;安全控制#xff08;认证、授权、加密#xff09;是核心需求。相比于 Spring Security 的重量级设计#xff0c;Apache Shiro 凭借其简洁的 API 和灵活的扩…[Java实战]Spring Boot 3 整合 Apache Shiro二十一 引言 在复杂的业务系统中安全控制认证、授权、加密是核心需求。相比于 Spring Security 的重量级设计Apache Shiro 凭借其简洁的 API 和灵活的扩展性成为许多开发者的优选方案。本文将手把手演示如何在 Spring Boot 3 中整合 Shiro 1.12.0实现完整的权限管理功能。 一、环境准备 openJDK 17Spring Boot 3 强制要求Spring Boot 3.4.5Apache Shiro 1.12.0支持 Jakarta EE 9Maven/Gradle本文使用 MavenRedis可选用于会话管理 二、项目依赖配置 在 pom.xml 中添加关键依赖 dependencies!-- Spring Boot Starter Web --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- Shiro Core --dependencygroupIdorg.apache.shiro/groupIdartifactIdshiro-spring-boot-starter/artifactIdversion1.12.0/versionclassifierjakarta/classifier/dependency!-- Servlet API (兼容性) --dependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion4.0.1/version/dependency /dependencies三、核心组件配置 1. Shiro 配置类 创建 ShiroConfig.java 定义安全规则 Configuration public class ShiroConfig {// 注入自定义 RealmBeanpublic UserRealm userRealm() {return new UserRealm();}// 配置 SecurityManagerBeanpublic SecurityManager securityManager(UserRealm userRealm) {DefaultWebSecurityManager securityManager new DefaultWebSecurityManager();securityManager.setRealm(userRealm);securityManager.setRememberMeManager(rememberMeManager());return securityManager;}// 配置 Shiro 过滤器Beanpublic ShiroFilterChainDefinition shiroFilterChainDefinition() {DefaultShiroFilterChainDefinition chain new DefaultShiroFilterChainDefinition();chain.addPathDefinition(/login, anon); // 匿名访问chain.addPathDefinition(/logout, logout); // 退出登录chain.addPathDefinition(/**, authc); // 需要认证return chain;}// 记住我功能Beanpublic RememberMeManager rememberMeManager() {CookieRememberMeManager rememberMeManager new CookieRememberMeManager();rememberMeManager.setCipherKey(Base64.decode(4AvVhmFLUs0KTA3Kprsdag));return rememberMeManager;} }2. 自定义 Realm 实现 创建 UserRealm.java 实现认证与授权逻辑 public class UserRealm extends AuthorizingRealm {Autowiredprivate UserService userService;// 授权逻辑Overrideprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {SimpleAuthorizationInfo info new SimpleAuthorizationInfo();String username (String) principals.getPrimaryPrincipal();// 查询用户角色和权限User user userService.findByUsername(username);info.setRoles(user.getRoles());info.setStringPermissions(user.getPermissions());return info;}// 认证逻辑Overrideprotected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {UsernamePasswordToken upToken (UsernamePasswordToken) token;String username upToken.getUsername();User user userService.findByUsername(username);if (user null) {throw new UnknownAccountException(用户不存在);}return new SimpleAuthenticationInfo(username, user.getPassword(), ByteSource.Util.bytes(user.getSalt()),getName());} }四、权限控制实战 1. 控制器层注解控制 在 Controller 方法上使用 Shiro 注解 RestController RequestMapping(/user) public class UserController {RequiresRoles(admin) // 需要admin角色GetMapping(/list)public ResponseEntityListUser listUsers() {// 业务逻辑}RequiresPermissions(user:delete) // 需要删除权限DeleteMapping(/{id})public ResponseEntityVoid deleteUser(PathVariable Long id) {// 业务逻辑} }2. 统一异常处理 通过 ControllerAdvice 捕获 Shiro 异常 Slf4j ControllerAdvice public class ShiroExceptionHandler {ExceptionHandler(AuthorizationException.class)public ResponseEntityApiResponse? handleAuthError(AuthorizationException e) {return ResponseEntity.status(HttpStatus.FORBIDDEN).body(new ApiResponse(403, 权限不足));}ExceptionHandler(AuthenticationException.class)public ResponseEntityApiResponse? handleLoginError(AuthenticationException e) {return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(new ApiResponse(401, 认证失败));} }五、高级功能扩展 1. 集成 Redis 会话管理 Bean public SessionDAO sessionDAO() {RedisSessionDAO sessionDAO new RedisSessionDAO();sessionDAO.setRedisManager(redisManager());return sessionDAO; }Bean public RedisManager redisManager() {RedisManager manager new RedisManager();manager.setHost(localhost:6379);manager.setDatabase(0);return manager; }2. 密码加密配置 Bean public HashedCredentialsMatcher hashedCredentialsMatcher() {HashedCredentialsMatcher matcher new HashedCredentialsMatcher();matcher.setHashAlgorithmName(SHA-256);matcher.setHashIterations(1024);matcher.setStoredCredentialsHexEncoded(false);return matcher; }// 在 Realm 中设置 userRealm.setCredentialsMatcher(hashedCredentialsMatcher());六、常见问题排查 1. 权限注解不生效 检查是否开启 AOP 支持在配置类添加 EnableAspectJAutoProxy确认方法为 public 且通过代理对象调用 2. 会话失效异常 检查 Redis 连接配置确保 SessionDAO 实现已正确注入 七、性能优化建议 缓存授权信息使用 CachingRealm 减少数据库查询限制会话数量配置 sessionManager 的全局会话上限启用集群模式通过 Redis 实现分布式会话 结语 通过本文您已完成 Spring Boot 3 与 Apache Shiro 的深度整合。相比 Spring SecurityShiro 的配置更简洁适合中小型项目快速实现安全控制。建议根据实际业务需求调整认证策略和缓存机制。 扩展阅读Shiro官方文档 希望本教程对您有帮助请点赞❤️收藏⭐关注支持欢迎在评论区留言交流技术细节
http://www.zqtcl.cn/news/285572/

相关文章:

  • 那里做网站好网站模板 登陆
  • 网站的服务器打不开wordpress 修改默认路径
  • 外贸网站做几种产品合肥网络公司哪个最好
  • 长乐区建设局网站一般通过什么渠道了解防灾减灾知识
  • 泰安商城网站开发设计什么网站备案比较快
  • 织梦网站修改首页图片网站名称去哪里注册
  • 电脑版 做网站尺寸怎么查找网站后台
  • 南京网站建设公司国际新闻头条最新消息
  • 类似于wordpress的网站吗做网站前端难吗
  • 做外贸网站维护费是多少小程序源码提取
  • 设计网站作品欣赏有那些网站注册商标官网入口
  • 装修网站怎么做的外贸谷歌推广怎么样
  • 建设部网站监理资质换证it外包 北京
  • flash网站制作公司杭州便宜的手机网站建设
  • 有ip地址如何做网站苏州门户网站建设
  • 菏泽北京网站建设邯郸做移动网站费用
  • 国外的平面设计网站施工企业介绍
  • 做网站市场价织梦模板自适应
  • xx单位网站建设方案设计精美的网站
  • 唐山市政建设总公司网站工商营业执照查询官网
  • 深圳建站模板建站网站介绍怎么写
  • 网站建设管理教程视频教程如何建一个电商平台
  • 深圳网络公司做网站wordpress怎么编辑网站
  • 淄博建站网络公司wordpress ldap外部登录认证
  • 南宁网站开发浏览器有哪几种
  • 石家庄哪里能制作网站网站301跳转
  • 网站建设报价浩森宇特wordpress怎样修改字体
  • 网站建设预估费用做品牌推广用什么网站
  • 网站建设风险评估西部数码 空间做2个网站
  • 专业购物网站建设wordpress the7不显示分类页