这两天由于家里出了点事情,没有准时的进行学习。今天补上之前的笔记

      -----没有学不会的技术,只有不停找借口的人

学习到的知识点:

  1.Shiro 集成WEB

  2.基于角色的权限控制

  3.基于权限的控制

工程目录结构

下面先是两个Servlet的内容

1.AdminServlet的内容

package com.zuoyan.shiro.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 {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("amdin doGet");}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("admin doPost");}}

2.LoginServlet中的内容

package com.zuoyan.shiro.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 {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("login Request get!");request.getRequestDispatcher("login.jsp").forward(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("login dopost");String userName=request.getParameter("userName");String password=request.getParameter("password");Subject subject=SecurityUtils.getSubject();UsernamePasswordToken token=new UsernamePasswordToken(userName, password);try{subject.login(token);    response.sendRedirect("success.jsp");}catch(Exception e){e.printStackTrace();request.setAttribute("errorInfo", "用户名或者密码错误");request.getRequestDispatcher("login.jsp").forward(request, response);}}}

解释说明一下,这个就是登录的请求,如果登录成功就跳转到success.jsp页面上,如果登录不成功的话,转发的登录界面上  其中使用了Shrio的身份认证!

login.jsp 中的内容就是一个简单的表单提交   提交的地址是login   这个就LoginServlet在这里处理登录请求

3.下面是Shiro.ini 中的内容

[main]
authc.loginUrl=/login
roles.unauthorizedUrl=/unauthorized.jsp
perms.unauthorizedUrl=/unauthorized.jsp
[users]
java1234=123456,admin
jack=123,teacher
zuoyan=zuoyan123
[roles]
admin=user:*
teacher=student:*
[urls]
/login=anon
/admin=authc
/student=roles[teacher]
/teacher=perms["user:create"]

3.1:  authc.loginUrl=/login 进行认证的地址,跳转到LoginServlet处理,然后username和password都为空,认证不通过,就跳转到登录界面

     roles.unauthorizedUrl=/unauthorized.jsp  这个是角色权限认证没通过跳转的地址

    perms.unauthorizedUrl=unauthorized.jsp  这个是权限认证没有通过 而跳转的界面

    [users] :这个是用户的的说明

    java1234=123456,admin  这个是设置了账号,还设置了用户的角色

    [roles]

    admin=user:*

    teacher=student:*

    [urls]

    /login=anon  这个就是匿名也可以访问

    /admin=authc  这个是需要认证身份的

    /student=roles[teacher] 这个是需要老师身份的才能访问

    teacher=perms["user:create"] 这个是需要拥有user:create 的权限,才可以操作

web.xml文件的配置  监听shiro  和配置shiro的支持, 还有配置两个Servlet

<?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><listener><listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class></listener><!-- 添加shiro支持 --><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.java1234.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.java1234.servlet.AdminServlet</servlet-class></servlet><servlet-mapping><servlet-name>adminServlet</servlet-name><url-pattern>/admin</url-pattern></servlet-mapping>
</web-app>

测试效果,简单说明,如果用户没有登录  运行项目

项目正常的跑起来了

然后访问   http://localhost:8080/ShiroWeb/admin

就会跳转到登录的界面

使用这个账号进行登录

这个是成功登录的效果

然后进行角色测试  访问http://localhost:8080/ShiroWeb/student   我使用的zuoyan这个账号仅仅拥有 admin的角色  而访问student这个需要的是teacher的角色

这个是出现的效果,如果给zuoyan加上teacher的这个角色那么认证就会通过

如果访问

如果访问这个,zuoyan就会认证通过的  因为他是admin角色,而admin的角色拥有对user的一切权限

这个样就是基于角色和权限的控制!

转载于:https://www.cnblogs.com/kangxinxin/p/7954014.html

Shiro学习笔记四(Shiro集成WEB)相关推荐

  1. Shiro学习笔记_02:shiro的认证+shiro的授权

    Shiro 学习笔记 本文基于B站UP主[编程不良人]视频教程[2020最新版Shiro教程,整合SpringBoot项目实战教程]进行整理记录,仅用于个人学习交流使用. 视频链接:https://w ...

  2. Shiro学习笔记(三)源码解析

    Shiro作为轻量级的权限框架,Shiro的认证流程是怎样的一个过程. 如果没有对Shiro进行了解的话,建议先对Shiro学习笔记(一)学习一下Shiro基本的组 成. 1,几大重要组件解析 1.1 ...

  3. shiro学习系列:shiro自定义filter过滤器

    shiro学习系列:shiro自定义filter过滤器 自定义JwtFilter的hierarchy(层次体系) 上代码 package com.finn.springboot.common.conf ...

  4. JavaScript-WebGL2学习笔记四-蒙板

    stencil test(蒙板) demo的显示效果 这个例子由四个源文件构成 webgl.html <html> <head><!--Title: JavaScript ...

  5. MySQL高级学习笔记(四)

    文章目录 MySQL高级学习笔记(四) 1. MySql中常用工具 1.1 mysql 1.1.1 连接选项 1.1.2 执行选项 1.2 mysqladmin 1.3 mysqlbinlog 1.4 ...

  6. 【http学习笔记四】安全篇

    [http学习笔记四]安全篇 文章目录 [http学习笔记四]安全篇 一.HTTPS 与 SSL/TLS ① 什么是安全? 机密性 完整性 身份认证 不可否认 ② 什么是HTTPS? ③ SSL/TL ...

  7. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...

  8. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  9. RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决)

    RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决) 参考文章: (1)RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决) (2)https://www.cnblogs. ...

最新文章

  1. 【算法】深度学习神经网络都调哪些参数?
  2. div文字自动扩充_文字资料扩充
  3. poi实现Excel导入导出依赖
  4. python 数据科学 包_什么时候应该使用哪个Python数据科学软件包?
  5. influxDb 异常:{“error“:“retention policy not found: default“}
  6. 计算机学报在线阅读,面向目标检测与姿态估计的联合文法模型计算机学报.pdf...
  7. Oracle 各种语法(一)
  8. 索尼印度研究院启动运营 将在应用AI和数据分析领域提供就业机会
  9. c语言如何调用外部文件的函数调用,keil 中如何调用其他文件的函数
  10. python库批量安装的方法
  11. 20165320 我期望的师生关系
  12. Windows系统、下的MySQL、版本升级、实操
  13. 经典:5种常见的数据分析方法
  14. PID算法详解及实例分析
  15. Excel VBA 巧用自定义函数进行数组去重
  16. 【0代码编程】ivx简介
  17. 五万美元的年薪是如何花光的
  18. linux请求超时 ping_linux下ping命令使用详解
  19. 英语、日语学习网站软件
  20. Java单元测试实践-11.Mock后Stub Spring的@Component组件

热门文章

  1. python中的连续比较是什么_Python算法的分治算法,python,之,连续,子,列表,最大,和...
  2. mybatis plug 只查id_MyBatis Generator的一个问题引发对插件的修改
  3. ida模拟器调试_IDA pro远程调试折腾记
  4. 仓库货位卡标识牌_仓库应如何规划?
  5. PyCharm中导入数据分析库
  6. python︱处理与使用json格式的数据(json/UltraJSON/Demjson)、pickle模块、yaml模块
  7. caffe+GPU︱AWS.G2+Ubuntu14.04+GPU+CUDA8.0+cudnn8.0
  8. NLP︱高级词向量表达(三)——WordRank(简述)
  9. [机器学习]关联挖掘算法Apriori和FP-Growth以及基于Spark 实例
  10. 万豪联姻蚂蚁金服 结合优势打造共赢