- 浏览: 188454 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (321)
- eclipse (4)
- idea (2)
- Html (8)
- Css (14)
- Javascript (8)
- Jquery (6)
- Ajax Json (4)
- Bootstrap (0)
- EasyUI (0)
- Layui (0)
- 数据结构 (0)
- Java (46)
- DesPattern (24)
- Algorithm (2)
- Jdbc (8)
- Jsp servlet (13)
- Struts2 (17)
- Hibernate (11)
- Spring (5)
- S2SH (1)
- SpringMVC (4)
- SpringBoot (11)
- WebService CXF (4)
- Poi (2)
- JFreeChart (0)
- Shiro (6)
- Lucene (5)
- ElasticSearch (0)
- JMS ActiveMQ (3)
- HttpClient (5)
- Activiti (0)
- SpringCloud (11)
- Dubbo (6)
- Docker (0)
- MySQL (27)
- Oracle (18)
- Redis (5)
- Mybatis (11)
- SSM (1)
- CentOS (10)
- Ant (2)
- Maven (4)
- Log4j (7)
- XML (5)
最新评论
1. Shiro集成Web配置
2. Shiro集成Web具体使用
3. Shiro标签使用
4. Shiro会话机制
<!-- 添加shiro支持 --> <listener> <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class> </listener> <filter> <filter-name>ShiroFilter</filter-name> <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class> </filter> <filter-mapping> <filter-name>ShiroFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> create maven project --> maven-archetype-webapp --> GroupId: com.andrew.shiro Artifact Id: ShiroWeb Package: com.andrew.shiro jdk版本修改为1.8
src/main/java/com/andrew/servlet/AdminServlet.java package com.andrew.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class AdminServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("admin do get"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("admin do post"); } } src/main/java/com/andrew/servlet/LoginServlet.java package com.andrew.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.subject.Subject; public class LoginServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("login doget"); req.getRequestDispatcher("login.jsp").forward(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("login dopost"); String userName = req.getParameter("userName"); String password = req.getParameter("password"); Subject subject = SecurityUtils.getSubject(); UsernamePasswordToken token = new UsernamePasswordToken(userName, password); try { subject.login(token); resp.sendRedirect("success.jsp"); } catch (Exception e) { e.printStackTrace(); req.setAttribute("errorInfo", "用户名或者密码错误"); req.getRequestDispatcher("login.jsp").forward(req, resp); } } } src/main/resources/log4j.properties log4j.rootLogger=DEBUG, Console #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n log4j.logger.java.sql.ResultSet=INFO log4j.logger.org.apache=INFO log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG src/main/webapp/WEB-INF/shiro.ini [main] authc.loginUrl=/login roles.unauthorizedUrl=/unauthorized.jsp perms.unauthorizedUrl=/unauthorized.jsp [users] andrew=123456,admin teacher1=123,teacher student1=123 student2=456 [roles] admin=user:* teacher=student:* [urls] /login=anon /admin=authc /student=roles[teacher] /teacher=perms["user:create"] src/main/webapp/WEB-INF/web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>ShrioWeb</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <!-- 添加shiro支持 --> <listener> <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class> </listener> <filter> <filter-name>ShiroFilter</filter-name> <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class> </filter> <filter-mapping> <filter-name>ShiroFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>loginServlet</servlet-name> <servlet-class>com.andrew.servlet.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>loginServlet</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> <servlet> <servlet-name>adminServlet</servlet-name> <servlet-class>com.andrew.servlet.AdminServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>adminServlet</servlet-name> <url-pattern>/admin</url-pattern> </servlet-mapping> </web-app> index.jsp <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> hello World! </body> </html> login.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="login" method="post"> userName:<input type="text" name="userName"/><br/> password:<input type="password" name="password"/><br/> <input type="submit" value="登录"/> </form> </body> </html> success.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> 欢迎你! </body> </html> unauthorized.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> 认证未通过,或者权限不足 </body> </html> 运行结果: 未登录 http://localhost:8080/ShiroWeb/admin http://localhost:8080/ShiroWeb/student http://localhost:8080/ShiroWeb/teacher 运行结果: 跳转到 http://localhost:8080/ShiroWeb/login student2 456 login http://localhost:8080/ShiroWeb/admin 正常 http://localhost:8080/ShiroWeb/student http://localhost:8080/ShiroWeb/teacher 调转到 http://localhost:8080/ShiroWeb/unauthorized.jsp 认证未通过,或者权限不足 teacher01 123 login http://localhost:8080/ShiroWeb/admin http://localhost:8080/ShiroWeb/student 正常 http://localhost:8080/ShiroWeb/teacher 调转到 http://localhost:8080/ShiroWeb/unauthorized.jsp 认证未通过,或者权限不足 andrew 123456 login http://localhost:8080/ShiroWeb/admin http://localhost:8080/ShiroWeb/student 正常 http://localhost:8080/ShiroWeb/teacher 调转到 http://localhost:8080/ShiroWeb/unauthorized.jsp 认证未通过,或者权限不足
2. Shiro集成Web具体使用
Url匹配方式 ? 匹配一个字符/admin?可以匹配/admin1 /admin2但是不能匹配/admin12 /admin * 匹配零个或者一个或者多个字符/admin*可以匹配/admin /admin1 /admin12但是不能匹配/admin/abc ** 匹配零个或者多个路径/admin/** 可以匹配/admin /admin/a /admin/a/b
3. Shiro标签使用
<shiro:hasRole name="admin"> 欢迎有admin角色的用户!<shiro:principal/> </shiro:hasRole> <shiro:hasPermission name="student:create"> 欢迎有student:create权限的用户!<shiro:principal/> </shiro:hasPermission>
4. Shiro会话机制
Session session = subject.getSession(); System.out.println("sessionId:" + session.getId()); System.out.println("sessionHost:" + session.getHost()); System.out.println("sessionTimeout:" + session.getTimeout());
发表评论
-
Shiro整合Spring
2019-02-20 09:20 3361. Shiro加密 文档:http://shiro.a ... -
Shiro自定义Realm
2019-02-19 09:17 3911. Shiro自定义Realm create mave ... -
Shiro权限认证(授权)
2019-02-18 09:40 4391. 权限认证核心要素 权限认证,也就是访问控制,即在应 ... -
Shiro身份认证
2019-02-18 09:31 2961. Subject认证主体 Subject认证主体包含 ... -
Shiro简介与示例
2019-02-18 09:23 3201. Shiro简介 Shiro官方主页:http://sh ...
相关推荐
Shiro 集成 Web 应用** 在 Web 开发中,Shiro 可以与 Servlet 框架如 Spring MVC 结合使用,实现安全控制。以下是一般步骤: - **配置 Shiro Filter**:在 `web.xml` 文件中配置 Shiro 的 `Filter`,如 `shiro...
Apache Shiro是一个强大的Java安全框架,它提供了身份验证、授权、会话管理和加密等功能,而OAuth2则是一种开放...总之,Shiro集成OAuth2可以提供更高级别的安全性和用户体验,是现代Web应用中常见的一种安全解决方案。
Apache Shiro 是目前使用率较高的一个 Java 安全框架。本视频基于 Shiro 的新版本 ...2.Shiro 集成 Web 具体使用 3.Shiro 标签使用 4.Shiro 会话机 5.自定义 Realm 第五章 加密 1.shiro 加密解密 2.shiro 加密应用
shiro web集成方向api,chm格式的。
通过学习和理解这些文件,开发者能够更好地掌握如何在实际项目中集成 Shiro 并实现完整的权限管理。 总之,Apache Shiro 作为 Java 安全框架,为 Web 开发提供了便捷的安全解决方案。通过合理的配置和定制,可以...
"shiro和web项目整合代码下载"这个主题表明我们将探讨如何在Spring MVC框架下集成Apache Shiro,以及实现一些常见的安全功能。 首先,Shiro的核心组件包括Subject、SecurityManager、Realms和Cryptography。Subject...
总的来说,Spring、SpringMVC和Shiro的集成为空框架提供了一个坚实的基础,开发者可以在此基础上快速搭建企业级应用,提高开发效率并保证系统的安全性。理解这三个框架的核心概念和它们之间的协作方式,对于Java Web...
本指南将详细探讨Shiro与Spring Web项目集成的过程,并分析Shiro在其中的作用和集成的关键点。 ### 1. Shiro与Spring框架的整合 Shiro与Spring Web项目的整合,首先需要在Spring项目中整合Shiro。整合的过程可以...
"web项目集成shirodemo" 指的是一个Web应用程序项目,它已经集成了Apache Shiro安全框架。Apache Shiro是一个强大且易用的Java安全框架,处理认证、授权、加密和会话管理。这个项目可能是为了展示如何在Web环境中...
### 单点登录CAS与权限管理框架Shiro集成 #### 一、概述 单点登录(Single Sign-On,简称SSO)是一种常见的身份验证技术,它允许用户通过一次登录即可访问多个应用程序和服务。这种机制提高了用户体验,同时也简化...
"shiro-web-master"暗示了我们还会接触到如何在Spring Boot或其它Web框架中集成Shiro。这通常涉及配置Shiro过滤器链,如`authc`(认证过滤器)、`perms`(权限过滤器)等,以实现URL级别的访问控制。 7. **实战...
在IT行业中,Shiro、Redis和Spring的集成是构建高效、安全Web应用的常见实践。本项目是一个将Apache Shiro与Redis缓存系统整合到Spring框架中的实例,旨在提升应用程序的安全性和性能。以下是对这个项目及其相关技术...
#### Shiro集成Web配置 1. 添加Shiro的Maven依赖。 2. 配置Web.xml,添加Shiro Filter。 3. 配置Shiro的ini配置文件,定义 Realm、安全策略等。 #### Shiro集成Web 1. 在Servlet容器中配置Shiro Filter。 2. 使用`@...
3. **Spring AOP集成**:Shiro的授权可以通过Spring AOP实现,通过定义切面来执行权限检查。 4. **Session管理**:Shiro可以接管Spring MVC的Session管理,提供跨域session支持,或者使用缓存来优化session性能。 ...
SSM(Spring、SpringMVC、MyBatis)是一个经典的Java web开发框架组合,而Redis是内存数据库,常用于缓存和会话管理,Shiro则是一个强大的安全框架,负责认证、授权、会话管理和安全控制。下面我们将深入探讨如何在...
总之,Struts2和Shiro的集成为Java Web应用提供了强大的用户管理和权限控制功能,而H2数据库可以作为数据存储,帮助我们快速地搭建和测试环境。通过理解这两个框架的核心概念和集成方式,开发者可以更好地实现安全的...
此外,JSP标签也是Shiro集成Web应用时使用的一部分功能。 会话管理是Shiro框架的另一个核心功能,包括了对会话的创建、管理、存储和销毁。Shiro的会话管理器可以配置不同的会话监听器、会话存储方式及会话验证机制...
6. **Shiro与Servlet容器的集成**: - 在web.xml中配置Shiro的Filter,如`Filter-name: shiroFilter`,然后指定其初始化参数,如`filter-class: org.apache.shiro.web.servlet.ShiroFilter`,以及相应的配置文件...
总的来说,SpringBoot集成FreeMarker和Shiro可以让我们轻松地构建出一个具备用户认证、授权功能的Web应用。通过FreeMarker的模板机制,我们可以灵活地控制页面显示,而Shiro则为我们提供了强大的安全防护。理解并...
将Spring Boot与Shiro集成,能够构建出安全且易于维护的Web应用。本文将详细介绍如何在Spring Boot项目中整合Shiro,实现用户登录、权限控制等功能。 **1. 添加依赖** 首先,在Spring Boot的`pom.xml`文件中添加...