尚硅谷Shiro视频

qwe123654 · · 72 次点击 · · 开始浏览    

下仔ke:789it.top/13472/ 一、教程定位与特色 目标人群 零基础Java开发者,或需快速集成权限管理的中小型项目团队。 适合希望替代Spring Security、简化安全配置的开发者。 核心优势 低门槛:10分钟可搭建基础权限系统,4小时掌握完整框架。 实战导向:结合Spring Boot,覆盖登录认证、角色授权、加密、会话管理等全流程。 灵活集成:支持Web、微服务、单体应用,兼容MySQL、Redis等数据源。 二、核心内容结构 入门与环境搭建 开发环境:推荐IntelliJ IDEA + Maven,依赖Shiro 1.9.1、Spring Boot 2.7.0。 项目结构: src/main/java/com/example/shirodemo/ ├── config/ # Shiro配置类 ├── controller/ # 控制器 ├── shiro/ # 自定义Realm └── ShiroDemoApplication.java # 启动类 核心功能实现 认证(Authentication) 通过UsernamePasswordToken实现登录,结合自定义Realm验证数据库用户。 示例代码: java Subject subject = SecurityUtils.getSubject(); subject.login(new UsernamePasswordToken("admin", "123456")); 授权(Authorization) 基于URL的权限控制: java Map<String, String> filterChain = new LinkedHashMap<>(); filterChain.put("/admin/**", "roles[admin]"); // 仅admin角色可访问 filterChain.put("/**", "authc"); // 其他路径需认证 细粒度权限检查: java subject.checkPermission("user:delete"); // 抛出异常若无权限 加密(Cryptography) 使用HashedCredentialsMatcher实现密码加盐存储: java @Bean public HashedCredentialsMatcher hashedCredentialsMatcher() { HashedCredentialsMatcher matcher = new HashedCredentialsMatcher("SHA-256"); matcher.setHashIterations(1024); // 迭代次数 return matcher; } 高级功能扩展 会话管理:集成Redis实现分布式Session: java @Bean public RedisCacheManager cacheManager() { RedisCacheManager cacheManager = new RedisCacheManager(); cacheManager.setRedisManager(redisManager()); return cacheManager; } 记住我(RememberMe):通过Cookie存储加密令牌: java CookieRememberMeManager rememberMeManager = new CookieRememberMeManager(); rememberMeManager.setCipherKey(Base64.decode("4AvVhmFLUs0KTA3Kprsdag==")); 三、实战案例:智能任务管理器 需求分析 功能:任务创建、编辑、删除、多设备同步、AI推荐。 权限设计: 普通用户:任务CRUD。 管理员:用户管理、数据统计。 代码实现 自定义Realm: java public class MyRealm extends AuthorizingRealm { @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) { String username = (String) token.getPrincipal(); User user = userService.findByUsername(username); return new SimpleAuthenticationInfo(user, user.getPassword(), getName()); } @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { User user = (User) principals.getPrimaryPrincipal(); SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); info.addRole(user.getRole()); info.addStringPermissions(user.getPermissions()); return info; } } Shiro配置: java @Configuration public class ShiroConfig { @Bean public MyRealm myRealm() { return new MyRealm(); } @Bean public SecurityManager securityManager() { DefaultWebSecurityManager manager = new DefaultWebSecurityManager(); manager.setRealm(myRealm()); manager.setCacheManager(cacheManager()); return manager; } @Bean public ShiroFilterFactoryBean shiroFilter() { ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean(); bean.setSecurityManager(securityManager()); bean.setLoginUrl("/login"); bean.setUnauthorizedUrl("/unauthorized"); Map<String, String> filterChain = new LinkedHashMap<>(); filterChain.put("/static/**", "anon"); filterChain.put("/admin/**", "roles[admin]"); filterChain.put("/**", "authc"); bean.setFilterChainDefinitionMap(filterChain); return bean; } } 四、教程评价与适用场景 优势 学习曲线平缓:对比Spring Security,Shiro的API更简洁,适合快速上手。 文档完善:尚硅谷提供PPT、源码、视频三件套,社区支持活跃。 生态兼容:无缝集成Spring Boot、MyBatis、Redis等主流技术栈。 局限性 功能丰富度:Spring Security在安全维护、OAuth2支持上更全面。 集群会话:需自行配置Redis,不如Spring Session集成便捷。 推荐场景 中小型项目权限管理。 快速交付的Web应用。 非Spring生态项目(如独立JavaSE应用)。

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

72 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传