一、搭建一个SpringBoot 项目。
二、导入shiro 相关坐标:
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.7.1</version>
</dependency>
三、与启动类同目录创建config 包:
实现抽象类AuthorizingRealm 中的方法:
package com.itmao.config;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
//from fhadmin.cn
public class UserRealm extends AuthorizingRealm {
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
System.out.println("执行了doGetAuthorizationInfo方法");
return null;
}
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
return null;
}
}
编写配置类:
package com.itmao.config;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.LinkedHashMap;
import java.util.Map;
//from fhadmin.cn
@Configuration
public class ShiroConfig {
// ShiroFilterFactoryBean
@Bean
public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("getDefaultWebSecurityManager") DefaultWebSecurityManager defaultWebSecurityManager){
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
// 设置安全管理器
shiroFilterFactoryBean.setSecurityManager(defaultWebSecurityManager);
// 设置shiro内置过滤器
Map<String,String> filterMap = new LinkedHashMap<>();
/*
map 中value 的意义
* anon: 无需认证就可以访问资源;
* authc:必须认证后才能访问资源;
* user:必须拥有“记住我”功能才能访问资源;
* perms:拥有对某个资源的权限才能访问资源;
* role:拥有某个角色权限才能访问资源
* **/
filterMap.put("/user/*","authc");
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterMap);
// 设置登录页面url
shiroFilterFactoryBean.setLoginUrl("/toLogin");
return shiroFilterFactoryBean;
}
// DefaultWebSecurityManager
@Bean
public DefaultWebSecurityManager getDefaultWebSecurityManager(@Qualifier("getUserRealm") UserRealm userRealm){
DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager();
// 关联UserRealm
defaultWebSecurityManager.setRealm(userRealm);
return defaultWebSecurityManager;
}
// 创建 realm 对象,需要自定义类
@Bean
public UserRealm getUserRealm() {
return new UserRealm();
}
}
四、编写测试页面和页面跳转的Controller。
上面设置user 目录下所有资源的访问均需认证后才可访问,未认证访问时,会自动跳转到登录页面,即表示登录拦截成功。
相关推荐
SpringBoot整合Shiro实现登录是一项常见的任务,尤其是在构建基于Java的Web应用时。Spring Boot以其简洁的配置和快速开发的特点,已经成为许多开发者的首选。而Apache Shiro则是一个强大且易用的安全管理框架,用于...
SpringBoot整合Shiro、JWT和Redis实现token登录授权验证以及token刷新 前端代码为一个博客页面,使用了Semantic UI框架结合thymeleaf模板 SpringBoot结合JWT+Shiro+Redis实现token无状态登录授权 [TOC] 一、引言 ...
在SpringBoot项目中集成Shiro,可以轻松地处理用户的登录、权限验证等安全问题。Shiro通过配置拦截器,可以对URL进行访问控制,实现权限的动态分配。 **Jwt** 是一种开放标准(RFC 7519),定义了一种紧凑的、自...
在实现登录失败次数限制时,我们需要使用 Shiro 框架提供的拦截器来判断用户的登录失败次数。当用户登录失败时,Shiro 框架将记录用户的登录失败次数,并在达到一定限制时禁止用户登录。 在实现密码加密时,我们...
SpringBoot整合Shiro是将Apache Shiro安全框架与SpringBoot微服务框架相结合,用于实现应用程序的安全管理和权限控制。Shiro是一个轻量级的安全框架,它提供了身份认证、授权(权限控制)、会话管理和加密等功能,...
通过以上步骤,我们成功地将SpringBoot、Shiro和Redis整合在一起,实现了基于Shiro的安全控制和Redis的Session共享。这种架构方案适用于大型分布式系统,能够提供稳定、高效且安全的用户体验。在实际应用中,还可以...
- **登录与注销**:实现登录页面和注销功能,利用Shiro的`Subject`对象进行身份验证和登出操作。 - **权限拦截**:在Controller层,通过Shiro的注解`@RequiresPermissions`或`@RequiresRoles`来实现方法级别的权限...
本项目"shirodemo"就是一个很好的示例,展示了如何在SpringBoot环境中配置和使用Shiro来实现基本的登录验证和权限拦截。 首先,SpringBoot提供了便捷的起步依赖(starters)来简化项目的初始化工作。在Shiro的整合...
**四、SpringBoot整合** 1. **启动器配置**:创建一个SpringBoot的启动器类,使用`@EnableShiroWeb`开启Shiro的Web支持。 2. **Filter配置**:配置Shiro的过滤器链,指定哪些请求应该通过哪些过滤器处理。这通常在...
分析这些代码可以帮助理解Shiro与SpringBoot的整合过程。 6. **注意事项**: - Shiro的缓存管理:为了提高性能,Shiro可以集成缓存框架如Redis,将用户的登录状态和权限信息存储在缓存中。 - 登录退出处理:正确...
SpringBoot 2.0 整合 Apache Shiro 是一个常见的安全框架集成,它为Web应用程序提供了用户认证和授权的功能。SpringBoot的优雅简洁与Shiro的强大安全特性相结合,可以简化开发过程,使得权限管理变得更加高效和便捷...
本项目采用SpringBoot、Apache Shiro以及LayuiMini框架来实现这一目标。接下来,我们将深入探讨这三个技术栈如何协同工作,构建出高效、安全的权限管理体系。 **SpringBoot** SpringBoot是Spring框架的轻量级衍生品...
SpringBoot-Shiro系统通常会集成一个日志框架(如Log4j、Logback),并在Shiro的拦截器中记录用户的登录、退出、权限异常等事件。 7. **前端Bootstrap UI** 前端界面采用Bootstrap框架,它提供了丰富的响应式布局...
为了整合Shiro,我们需要在`pom.xml`文件中添加以下依赖: 1. Spring Boot Starter Web 2. MySQL Connector 3. Spring Boot Starter AOP(用于AOP代理,确保权限拦截生效) 4. Lombok(可选,简化代码) 5. Spring ...
本demo为Spring boot整合shiro,以mybatis plus做dao层交互数据,实现了读取数据库用户数据实现用户登录,权限认证,读取数据库中用户对应的url请求,实现请求的过滤。自定义了relam和过滤器来实现这些功能
《SpringBoot整合Shiro实战详解》 在当前的IT领域,SpringBoot因其简洁的配置、快速的开发效率以及丰富的生态支持,已经成为企业级应用开发的首选框架。而Apache Shiro作为一款强大的安全管理框架,用于处理身份...
### SpringBoot整合Shiro与Thymeleaf-权限管理实战 #### 一、Spring Boot简介 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目标是简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式(默认...
这个Demo提供了一个使用SpringBoot和Shiro实现简单登录验证和权限控制的实例,对于学习和理解这两个框架的集成非常有帮助。通过阅读和实践这个Demo,开发者可以更好地掌握如何在实际项目中应用SpringBoot的便捷性和...
以上就是SpringBoot整合Shiro和MyBatis的基础知识和实现流程。实际项目中,可能还需要考虑更多细节,如异常处理、记住我功能、API权限控制等。通过这种方式,我们可以构建一个健壮且易于维护的权限管理系统。