Shiro web 的第一个入门级别案例

最近在学习shiro安全框架,写了一个简单入门的Shiro Web程序

##简介:

Apache Shiro是一个强大且易用的 Java 安全框架,执行身份验证、授权、密码学和会话管理。

认证、授权:

认证简单的说,就是登录的时候判断你的用户名和密码是否完全匹配,就是证明你是你。

授权,是在认证的基础之上,进行角色和权限的授予。权限决定了一个用户可以进行怎样的操作。

角色、权限

权限定义了一个用户是否可以执行某个操作。

角色就是一组权限的集合。

我们通常是把一组权限绑定到一种角色上,再把一个或者多个角色赋给一个用户,这样就实现了权限的控制。即权限通过角色定义到用户上。角色作为权限的集合,方便了我们对权限的管理。

实现登录案例:

Shiro web 的第一个入门级别案例_第1张图片

使用Shiro 框架 实现简单的登录验证

步骤一:导包

在maven 的pom.xml中导入对应的依赖:


			junit
			junit
			3.8.1
			test
		

		
		
			org.apache.shiro
			shiro-core
			1.2.5
		
		
		
			org.apache.shiro
			shiro-web
			1.2.5
		

		
		
			javax.servlet
			javax.servlet-api
			3.1.0
		
		
		
			javax.servlet.jsp
			javax.servlet.jsp-api
			2.3.1
		
		
		
			javax.servlet
			jstl
			1.2
		
		
		
		
			org.apache.logging.log4j
			log4j-core
			2.11.1
		

		
			commons-logging
			commons-logging
			1.2
		
		
			org.slf4j
			slf4j-api
			1.7.21
		

步骤二:在web.xml中实现对Shiro的支持

Shiro如果想要集成到web中,首先需要在web.xml中配置Shiro的监听器和过滤器,如下:


	
		ShiroFilter
		org.apache.shiro.web.servlet.ShiroFilter
		
			configPath
			/WEB-INF/shiro.ini
		
	
	
	
		ShiroFilter
		/*
	
	
	
		org.apache.shiro.web.env.EnvironmentLoaderListener
	

步骤三:配置一个 ini 文件 例如 Shiro.ini

#定义几个用户和角色
[users]
#账号名=密码,角色
csdn1=123,admin,teacher
csdn2=123,teacher
csdn3=123,student
csdn4=123


步骤四:编写一个测试的Servlet

package servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
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.AuthenticationException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;

@WebServlet(value="/login")
public class ShiroLogin  extends HttpServlet{

	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		 System.out.println("login doGet");
	        String username = request.getParameter("username");
	        String password = request.getParameter("password");

	        Subject currentUser = SecurityUtils.getSubject();
	        UsernamePasswordToken token = new UsernamePasswordToken(username, password);
	        try {
	            currentUser.login(token);
	            System.out.println("认证成功");
	            request.getSession().setAttribute("username", username);
	            //认证成功跳转到成功页面
	            request.getRequestDispatcher("success.jsp").forward(request, response);
	        } catch (AuthenticationException e) {
	            e.printStackTrace();
	            System.out.println("认证失败");
	            //失败重新回到登录页面
	            request.getRequestDispatcher("index.jsp").forward(request, response);
	        }
	
	}

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		 doGet(request, response);
	}
	
	
	

}

步骤五:编写所需要的jsp页面文件(简单编写 能用即可)

index.jsp(访问初始页面)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


	
username:
password:

success.jsp(访问成功页面)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isELIgnored="false"%>




Insert title here


	${username}你好。认证成功!


步骤六:测试

Shiro web 的第一个入门级别案例_第2张图片Shiro web 的第一个入门级别案例_第3张图片

成功!

你可能感兴趣的:(安全框架学习)