shiro框架有那些功能
时间: 2024-01-10 16:11:39 浏览: 31
Shiro框架是一个Java安全框架,提供了以下功能:
1. 认证:Shiro能够处理用户身份认证,包括用户名/密码验证、单点登录等。
2. 授权:Shiro提供了细粒度的授权机制,可以控制用户对系统资源的访问权限。
3. 会话管理:Shiro能够管理用户会话,包括创建、销毁、修改等操作。
4. 缓存:Shiro提供了缓存功能,可以缓存用户信息、角色信息、权限信息等。
5. 加密:Shiro能够提供密码加密功能,确保密码的安全性。
6. 统一安全管理:Shiro能够集成多种安全机制,如LDAP、ActiveDirectory、OAuth等。
7. Spring集成:Shiro可以很方便地和Spring框架集成,提供了Spring Security的替代方案。
相关问题
shiro框架跟ssm有什么区别
Shiro框架和SSM框架有以下区别:
1. 功能不同:
- Shiro框架主要用于安全验证和权限管理,提供了身份认证和访问控制的功能。
- SSM框架是一个综合性的开发框架,包括Spring、SpringMVC和MyBatis,用于开发Java Web应用。
2. 侧重点不同:
- Shiro框架的主要侧重点是安全性和权限管理,在用户登录和访问控制方面提供了丰富的功能。
- SSM框架的主要侧重点是整个Web应用的开发流程,包括前端和后端的开发和协作。
3. 使用方式不同:
- Shiro框架是一个独立的安全框架,可以与任何Java框架集成,例如Spring、Spring Boot等。
- SSM框架是一个整体的开发框架,包括Spring、SpringMVC和MyBatis,需要一起使用。
4. 学习曲线不同:
- Shiro框架相对较简单,学习和使用相对容易。
- SSM框架整合了多个框架,需要掌握各个框架的知识和配置,学习和使用相对复杂。
用shiro框架写一个登录功能
好的,下面是一个使用 Shiro 框架实现登录功能的示例代码:
1. 首先,在 pom.xml 文件中添加 Shiro 和相关依赖:
```
<!-- Shiro -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.7.1</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<version>1.7.1</version>
</dependency>
```
2. 在 shiro.ini 文件中配置 Shiro 的安全策略和相关参数:
```
[main]
# 指定使用加密算法
credentialsMatcher = org.apache.shiro.authc.credential.HashedCredentialsMatcher
credentialsMatcher.hashAlgorithmName = SHA-256
# 指定加密算法的盐值
credentialsMatcher.hashSalted = true
credentialsMatcher.hashIterations = 1000
# 指定数据源
jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.dataSource = jdbcDataSource
# 配置安全管理器
securityManager.realms = jdbcRealm
# 配置登录页面和成功页面
authc.loginUrl = /login.jsp
authc.successUrl = /home.jsp
```
3. 在 web.xml 文件中配置 Shiro 的 Filter:
```
<!-- Shiro Filter -->
<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>
```
4. 在登录页面 login.jsp 中,使用 Shiro 的标签库实现登录功能:
```
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
...
<form method="post" action="${pageContext.request.contextPath}/login">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登录">
<shiro:csrfToken/>
</form>
```
5. 在登录的 Servlet 中,使用 Shiro 的 API 进行认证:
```
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
// 封装用户信息
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
// 获取当前用户的 Subject
Subject currentUser = SecurityUtils.getSubject();
try {
// 进行认证
currentUser.login(token);
// 登录成功,重定向到首页
response.sendRedirect(request.getContextPath() + "/home.jsp");
} catch (AuthenticationException e) {
// 登录失败,返回错误信息
request.setAttribute("error", "用户名或密码错误");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
}
```
以上就是使用 Shiro 框架实现登录功能的示例代码。需要注意的是,在实际开发中,我们还需要根据具体的业务需求进行适当的调整和扩展。