ssh,struts2加hibernate加spring,要加shiro,要怎么整,有没有比较好的教程
是配在struts上,还是spring上,,,struct2的话。我找的教程都不是整合的,原理是利用struct2的拦截器,跳转到一个用于认证是否登录的action,在里面再调用一个自定义的shiro的realm来实现的,并没有在Web.xml进行配置shiro的拦截器,,,,,,spring的话,我看到好像都是springMVC的
ssh中怎么整合shiro,请大神指点
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
你知我知皆知 2024-08-05 12:26关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
首先,你需要确保你的项目已经包含了Spring和Shiro的依赖。如果你使用的是Maven,你可以在pom.xml文件中添加以下依赖:
<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.4.0</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-web</artifactId> <version>1.4.0</version> </dependency>接下来,你需要创建一个名为
SecurityConfig.java的类,并在其中设置Shiro的配置信息。这个类应该包含以下内容:import org.apache.shiro.config.IniConfigurationSource; import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.realm.jdbc.JdbcRealm; import org.apache.shiro.spring.web.ShiroFilterFactoryBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class SecurityConfig { @Autowired private DataSource dataSource; @Bean(name = "securityManager") public SecurityManager securityManager() { JdbcRealm realm = new JdbcRealm(dataSource); return ShiroProperties.createDefault().setSecurityManager(realm).build(); } @Bean(name = "filterChainDefinitionMap") public ShiroFilterFactoryBean filterChainDefinitionMap() { ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean(); // 设置过滤规则 factoryBean.setLoginUrl("/login"); factoryBean.setUnauthorizedUrl("/unauthorized"); // 设置授权规则 factoryBean.setSuccessUrl("/"); factoryBean.setUnauthorizedUrl("/unauthorized"); // 设置权限控制策略 factoryBean.setFilterChainDefinitions("/* -> /unauthorized, /unauthorized"); return factoryBean; } }然后,你需要在你的控制器或Action中调用上述配置。例如,在Controller中的get方法中,你可以这样写:
@GetMapping("/some-page") public String somePage(SecurityContext security) { // 获取当前用户 User user = (User) security.getSubject().getPrincipal(); // 如果用户未登录,则重定向到登录页面 if (user == null) { return "/login"; } // 如果用户已登录,则执行一些业务逻辑 // ... return "redirect:/some-page"; // 跳转到指定页面 }最后,你还需要在web.xml中配置Shiro的拦截器。这通常涉及到将拦截器添加到特定的路径上。
<servlet> <servlet-name>ShiroFilter</servlet-name> <servlet-class>org.apache.shiro.web.filter.ShiroFilterServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/shiro/spring.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>ShiroFilter</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>以上就是如何在Spring MVC中集成Shiro的基本步骤。请注意,这只是一个基本的例子,实际的应用可能需要根据你的具体需求进行调整。
解决 无用评论 打赏 举报