本文前提:
1、已有使用MAVEN进行项目构建的SpringMVC项目
实现步骤
1、在pom中添加Shiro的依赖
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.2.2</version>
</dependency>
2、web.xml中进行注册
必须要放在springMVC之前进行注册
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:/spring.xml
classpath*:/spring-shiro.xml
</param-value>
</context-param>
...
...
...
<filter>
<filter-name>shiroFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>shiroFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3、添加spring-shiro.xml文件,在spring中进行Shiro设置
<bean id="myRealm" class="com.test.core.shiro.MyRealm"/>
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="mRealm"/>
</bean>
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="securityManager" ref="securityManager"/>
<property name="loginUrl" value="/login"/>
<property name="successUrl" value="/"/>
<property name="unauthorizedUrl" value="/401"/>
<property name="filterChainDefinitions">
<value>
/login=anon
/logout=anon
/dologin=anon
/**=authc
</value>
</property>
</bean>
<!-- Shiro生命周期处理器 -->
<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>
4、实现MyRealm
public class MyRealm extends AuthorizingRealm {
private Logger logger = Logger.getLogger(MyRealm.class);
@Autowired
private UserManager userManager;
//权限认证
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
String username = (String) principals.getPrimaryPrincipal();
User user = userManager.getUser(username);
if (user == null)
throw new AuthorizationException("用户不存在");
List<String> roleList = new ArrayList<String>();
List<String> permList = new ArrayList<String>();
for (Role role : user.getRoles()) {
roleList.add(role.getRolename());
for (Function func : role.getFunctions()) {
permList.add(func.getFuncname());
}
}
SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
authorizationInfo.addRoles(roleList);
authorizationInfo.addStringPermissions(permList);
return authorizationInfo;
}
//登陆认证
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
UsernamePasswordToken verifyToken = (UsernamePasswordToken) token;
String username = (String) token.getPrincipal();
User user = userManager.getUser(username);
if (user == null)
throw new UnknownAccountException("用户不存在");
logger.info("用户["+user.getUsername()+"]尝试进行登录操作");
return new SimpleAuthenticationInfo(user.getUsername(), user.getPassword(), getName());
}
}
5、在Controller类中添加如下代码进行登录验证
UsernamePasswordToken token = new UsernamePasswordToken(username, password.toCharArray());
try {
SecurityUtils.getSubject().login(token);
} catch (UnknownAccountException e) {
request.setAttribute("error", "用户不存在");
} catch (IncorrectCredentialsException | LockedAccountException | VerifyException e) {
request.setAttribute("error", e.getMessage());
} catch (ExcessiveAttemptsException e) {
request.setAttribute("error", "输入的错误次数过多,用户已锁定");
} catch (Exception e) {
request.setAttribute("error", "系统繁忙,请稍后再试");
}
Shiro最基本的验证功能已添加成功
分享到:
相关推荐
3. **引入依赖**:在pom.xml中添加Spring、SpringMVC、MyBatis、Shiro的依赖。 4. **配置Spring**:编写Spring的配置文件,包括bean的定义、数据源、事务管理器等。 5. **配置SpringMVC**:设置DispatcherServlet,...
springmvc+spring+shiro+cas单点登录实例 加入了登录验证码认证,修改了下首页样式,不过样式没有弄好,很丑的,有空自己再弄下 说明:cas-server是单点登录服务端,用的是maven项目,但是WEB-INF里面的lib目录下面...
在本示例项目"shiroDemo"中,开发者可能已经实现了这些整合步骤,创建了一个能够展示SpringMVC+Shiro功能的简单应用。通过查看源代码,可以学习到具体实现细节,如Shiro的配置文件、Controller中的权限注解、以及 ...
3. **添加依赖**:在pom.xml或build.gradle文件中,添加SpringMVC、MyBatis、Shiro以及它们所需的依赖库。 4. **配置SpringMVC**:在web.xml中配置SpringMVC的DispatcherServlet,同时配置ContextLoaderListener来...
1. **配置Maven**: 在pom.xml文件中添加Spring、SpringMVC、MyBatis、Shiro和其依赖的库,定义项目构建配置。 2. **创建Spring配置**: 设计Spring的bean配置文件,包括Spring MVC的DispatcherServlet配置、数据源...
描述中提到的"无需添加任何jar包,直接可以导入eclipse运行"表明这个项目已经包含了所有必需的依赖库,并且可能已经配置好了一些基本的设置,如pom.xml文件(如果使用的是Maven项目),使得开发者可以直接运行项目,...
本人提供这个Shiro + SpringMvc + Mybatis + Redis 的Demo 本着学习的态度,如果有欠缺和不足的地方,给予指正,并且多多包涵。 “去其糟粕取其精华”。如果觉得写的好的地方就给个赞,写的不好的地方,也请多多包涵...
1. **依赖引入**:在项目中添加SpringMVC和Shiro的依赖库。确保pom.xml文件中包含了SpringMVC、Shiro以及相关的依赖项。 2. **配置Shiro**:创建一个名为`shiro.ini`的配置文件,定义用户、角色和权限。例如,你...
4. **定义安全 Realm**:Realm 是Shiro中的核心组件,负责用户身份验证和权限验证。我们需要自定义一个 Realm 类,实现`AuthorizingRealm`接口,覆盖`doGetAuthenticationInfo`和`doGetAuthorizationInfo`方法,对接...
实现的功能为管理员的列表的查看,管理员删除,管理员增加以及选择角色,角色列表的查看,角色的删除以及批量删除,角色的添加以及对应角色权限的添加,每个功能模块都有对应的权限,超级管理员具有所有权限,并可以...
在"maven+springmvc+hibernate+shiro权限控制"的项目中,Maven作为项目构建工具,管理项目的依赖关系,使得各个框架的集成更加便捷。Maven的pom.xml文件定义了项目所需的库和插件,通过简单的命令就可以完成编译、...
在整合 Spring MVC 和 Shiro 时,需要正确配置它们的依赖关系,比如在Spring的配置文件中添加Shiro的过滤器链,以及创建自定义的 Realm 来连接数据库进行用户验证。同时,还需要配置 Shiro 的权限规则,以便实现安全...
在Shiro中,我们可以通过自定义 Realm 实现与LDAP服务器的连接。创建一个继承自`AuthorizingRealm`的类,重写`doGetAuthenticationInfo`和`doGetAuthorizationInfo`方法,以便从LDAP服务器获取用户信息并进行认证。 ...
1. 引入Shiro的相关依赖:在项目中添加Shiro的Maven或Gradle依赖,确保可以使用其提供的类和接口。 2. 配置Shiro:创建一个Shiro的配置类,设置Realm(域)以处理认证和授权,配置过滤器链,指定哪些URL需要经过...
1. **添加依赖**:在项目中引入Shiro和Spring MVC的依赖库。通常在Maven或Gradle的配置文件中添加对应的依赖项。 2. **配置Shiro**:创建一个名为`shiro.ini`的配置文件,定义用户、角色及权限的关系,以及安全相关...
在Pom.xml文件中,我们需要添加Shiro相关的依赖项,以便使用Shiro的安全机制。以下是一个基本的Pom.xml配置文件: ```xml <!-- shiro 版本号 --> <shiro.version>1.2.4</shiro.version> <!-- shiro-core --> ...
在这个"Shiro学习示例,以及与SpringMVC整合,标签注解等"项目中,我们可以深入理解Shiro的核心功能以及如何在实际开发中与SpringMVC集成。 首先,Shiro 提供了用户认证(Authentication)机制,允许应用验证用户...
SpringMVC与Shiro是两个在Java Web开发中常用的框架,SpringMVC主要负责处理控制器层,而Shiro则是一个强大的安全认证与授权框架。它们的结合使用可以帮助开发者构建安全、高效的Web应用。 1. SpringMVC框架 ...
本项目结合了CAS(Central Authentication Service)、SpringMVC和Shiro三个核心组件来实现这样的功能。 CAS是一个开源的身份验证框架,它提供了基于Web的SSO解决方案。CAS服务器作为认证中心,负责验证用户的凭证...
Spring、SpringMVC和Shiro是Java开发中常用的三大框架,它们在企业级应用开发中起着关键作用。Spring作为核心容器,管理着应用的组件和依赖;SpringMVC是Spring框架的一部分,专用于构建Web应用程序的前端控制器;而...