`

为SpringMVC项目中添加Shiro基本实现

阅读更多
本文前提:
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最基本的验证功能已添加成功
分享到:
评论

相关推荐

    spring+springmvc+mybatis+shiro框架搭建

    3. **引入依赖**:在pom.xml中添加Spring、SpringMVC、MyBatis、Shiro的依赖。 4. **配置Spring**:编写Spring的配置文件,包括bean的定义、数据源、事务管理器等。 5. **配置SpringMVC**:设置DispatcherServlet,...

    springmvc+spring+shiro+cas单点登录实例

    springmvc+spring+shiro+cas单点登录实例 加入了登录验证码认证,修改了下首页样式,不过样式没有弄好,很丑的,有空自己再弄下 说明:cas-server是单点登录服务端,用的是maven项目,但是WEB-INF里面的lib目录下面...

    springmvc+mybatis+mysql+shiro

    在本示例项目"shiroDemo"中,开发者可能已经实现了这些整合步骤,创建了一个能够展示SpringMVC+Shiro功能的简单应用。通过查看源代码,可以学习到具体实现细节,如Shiro的配置文件、Controller中的权限注解、以及 ...

    基于springmvc+mybatis的shiro搭建实例

    3. **添加依赖**:在pom.xml或build.gradle文件中,添加SpringMVC、MyBatis、Shiro以及它们所需的依赖库。 4. **配置SpringMVC**:在web.xml中配置SpringMVC的DispatcherServlet,同时配置ContextLoaderListener来...

    Spring+SpringMVC+MyBatis+Shiro+Maven集成web项目

    1. **配置Maven**: 在pom.xml文件中添加Spring、SpringMVC、MyBatis、Shiro和其依赖的库,定义项目构建配置。 2. **创建Spring配置**: 设计Spring的bean配置文件,包括Spring MVC的DispatcherServlet配置、数据源...

    spring+springmvc+mybatis+shiro

    描述中提到的"无需添加任何jar包,直接可以导入eclipse运行"表明这个项目已经包含了所有必需的依赖库,并且可能已经配置好了一些基本的设置,如pom.xml文件(如果使用的是Maven项目),使得开发者可以直接运行项目,...

    SpringMVC-Mybatis-Shiro-redis-master 权限集成缓存中实例

    本人提供这个Shiro + SpringMvc + Mybatis + Redis 的Demo 本着学习的态度,如果有欠缺和不足的地方,给予指正,并且多多包涵。 “去其糟粕取其精华”。如果觉得写的好的地方就给个赞,写的不好的地方,也请多多包涵...

    SpringMVC整合Shiro的完整示例代码下载

    1. **依赖引入**:在项目中添加SpringMVC和Shiro的依赖库。确保pom.xml文件中包含了SpringMVC、Shiro以及相关的依赖项。 2. **配置Shiro**:创建一个名为`shiro.ini`的配置文件,定义用户、角色和权限。例如,你...

    shirodemo整合spring+springmvc+shiro

    4. **定义安全 Realm**:Realm 是Shiro中的核心组件,负责用户身份验证和权限验证。我们需要自定义一个 Realm 类,实现`AuthorizingRealm`接口,覆盖`doGetAuthenticationInfo`和`doGetAuthorizationInfo`方法,对接...

    使用Spring、SpringMVC、Mytatis、Shiro开发的RBAC角色权限管理系统.zip

    实现的功能为管理员的列表的查看,管理员删除,管理员增加以及选择角色,角色列表的查看,角色的删除以及批量删除,角色的添加以及对应角色权限的添加,每个功能模块都有对应的权限,超级管理员具有所有权限,并可以...

    maven+springmvc+hibernate+shiro权限控制

    在"maven+springmvc+hibernate+shiro权限控制"的项目中,Maven作为项目构建工具,管理项目的依赖关系,使得各个框架的集成更加便捷。Maven的pom.xml文件定义了项目所需的库和插件,通过简单的命令就可以完成编译、...

    springmvc+shiro jar

    在整合 Spring MVC 和 Shiro 时,需要正确配置它们的依赖关系,比如在Spring的配置文件中添加Shiro的过滤器链,以及创建自定义的 Realm 来连接数据库进行用户验证。同时,还需要配置 Shiro 的权限规则,以便实现安全...

    springmvc整合shiro

    在Shiro中,我们可以通过自定义 Realm 实现与LDAP服务器的连接。创建一个继承自`AuthorizingRealm`的类,重写`doGetAuthenticationInfo`和`doGetAuthorizationInfo`方法,以便从LDAP服务器获取用户信息并进行认证。 ...

    springmvc+shiro 框架搭建

    1. 引入Shiro的相关依赖:在项目中添加Shiro的Maven或Gradle依赖,确保可以使用其提供的类和接口。 2. 配置Shiro:创建一个Shiro的配置类,设置Realm(域)以处理认证和授权,配置过滤器链,指定哪些URL需要经过...

    shiro+springmvc整合

    1. **添加依赖**:在项目中引入Shiro和Spring MVC的依赖库。通常在Maven或Gradle的配置文件中添加对应的依赖项。 2. **配置Shiro**:创建一个名为`shiro.ini`的配置文件,定义用户、角色及权限的关系,以及安全相关...

    springmvc+shiro配置教程

    在Pom.xml文件中,我们需要添加Shiro相关的依赖项,以便使用Shiro的安全机制。以下是一个基本的Pom.xml配置文件: ```xml &lt;!-- shiro 版本号 --&gt; &lt;shiro.version&gt;1.2.4&lt;/shiro.version&gt; &lt;!-- shiro-core --&gt; ...

    Shiro学习示例,以及与SpringMVC整合,标签注解等

    在这个"Shiro学习示例,以及与SpringMVC整合,标签注解等"项目中,我们可以深入理解Shiro的核心功能以及如何在实际开发中与SpringMVC集成。 首先,Shiro 提供了用户认证(Authentication)机制,允许应用验证用户...

    springmvc shiro

    SpringMVC与Shiro是两个在Java Web开发中常用的框架,SpringMVC主要负责处理控制器层,而Shiro则是一个强大的安全认证与授权框架。它们的结合使用可以帮助开发者构建安全、高效的Web应用。 1. SpringMVC框架 ...

    cas.zip_cas 结合 springmvc shiro 做项目单点认证

    本项目结合了CAS(Central Authentication Service)、SpringMVC和Shiro三个核心组件来实现这样的功能。 CAS是一个开源的身份验证框架,它提供了基于Web的SSO解决方案。CAS服务器作为认证中心,负责验证用户的凭证...

    spring、springmvc、shiro集成空框架

    Spring、SpringMVC和Shiro是Java开发中常用的三大框架,它们在企业级应用开发中起着关键作用。Spring作为核心容器,管理着应用的组件和依赖;SpringMVC是Spring框架的一部分,专用于构建Web应用程序的前端控制器;而...

Global site tag (gtag.js) - Google Analytics