shiro_项目_登录与权限验证

springboot-整合shiro和vue的验证登录和权限 springboot-整合shiro和vue的验证登录和权限 文章目录springboot-整合shiro和vue的验证登录和权限1.配置1.1数据表这里权限控制有5张表,详情见代码中的test.sql文件1.2工程说明:1.3springboot下的shiro配置1.4shiro登录验证的使用:1.5前端采用vue2.测试 完整代码下载链接: https://github.com/2010yhh... 阅读详情

1 Shiro登录

登录流程:

  1. 准备一个登录界面login.jsp
  2. 点击登录的时候,向后台传递用户名和密码
    Controller层
  3. 接受参数
  4. 完成登录认证
//post进入该方法
@RequestMapping(value = "/login",method = RequestMethod.POST)
@ResponseBody
public JsonResult login(String username, String password){
    //主体
    Subject subject = SecurityUtils.getSubject();
    //判断该主体是否已经认证过
    if (!subject.isAuthenticated()) {
        try {
            UsernamePasswordToken token = new UsernamePasswordToken(username, password);
            subject.login(token);
        }catch (UnknownAccountException uae) {
            return new JsonResult(false, "账号错误");
        } catch (IncorrectCredentialsException ice) {
            return new JsonResult(false, "密码错误");
        } catch (LockedAccountException lae) {
            return new JsonResult(false, "这个账号已经被锁定");
        }catch (AuthenticationException ae) {
            return new JsonResult(false, "其他认证错误");
        }
    }
    return new JsonResult();
}

2 完成登录认证时提交form表单

//登录方法
function submitForm() {
    //提交表单
    $("#loginForm").form("submit",{
       url:"/login",
       success:function (data) {
           //返回字符串
          var jsonObj =  $.parseJSON(data);
           if (jsonObj.success){
               //进入页面
               location.href="/main";
           }else {
               $.messager.alert("温馨提示:","登录失败:" + jsonObj.msg,"error");
           }

       }
    });
}

3 增加方法—按回车键提交到后台

//按回车登录  绑定键盘事件
$(document.documentElement).on("keyup", function(event) {
    //event 键盘事件的对象
    if(event.keyCode == 13){
        submitForm();
    }
});

4 重置表单里面的内容

function resetForm() {
    $("#loginForm").form("clear");
}

5 注销用户功能

前台显示

<div style="float:right;margin-right: 20px; ">
    欢迎[<shiro:principal />]登录,
    <a href="${pageContext.request.contextPath}/logout">退出</a>
</div>

后台方法跳转

//注销
@RequestMapping("/logout")
public String logout(){
    Subject subject = SecurityUtils.getSubject();
    subject.logout();
    return "forward:/WEB-INF/views/login.jsp";
}

6 解决登录过期

//判断当前窗口是否是顶层窗口
if(top != window){
    window.top.location.href = window.location.href;
}

7 权限

7.1 角色用户显示所有权限

在这里插入图片描述

function formatperms(arr) {
    var persStr = "";
    for (var i = 0; i < arr.length; i++) {
        var obj = arr[i];
        if (i != arr.length - 1) {
            persStr += obj.name + ",";
        } else {
            persStr += obj.name;
        }
    }
    return persStr;
}

7.2 初始化表格数据

在这里插入图片描述

//初始化表格
//我们在这里创建两个Grid
//创建当前角色的权限Grid
userPermissionGrid.datagrid({
    fit:true,
    fixed:true,
    fitColumns:true,
    rownumbers:true ,
    //双击后移除权限
    onDblClickRow:itsource["removePermission"]
})

//获取所有权限的Grid
allPermissionGrid.datagrid({
    fit:true,
    fixed:true,
    fitColumns:true,
    singleSelect:true,
    url:"/permission/page",
    rownumbers:true ,
    pagination:true,
    //双击后添加权限
    onDblClickRow:itsource["addPermissions"]
})
addPermissions:function (index,row) {
 //双击添加权限
  //把选中的数据  添加到左边的表格中去
  //重复的数据不要添加
  var allrows = userPermissionGrid.datagrid("getRows");
  for (var i = 0; i <allrows.length ; i++) {
      var rowData = allrows[i];
      if (rowData.id == row.id){
          //重复
          $.messager.show({
              title:'提示',
              msg:'该权限已经添加!',
              timeout:2000,
              showType:'slide'
          });
          return;
      }
  }
  userPermissionGrid.datagrid('appendRow',row);
},
removePermission:function (rowIndex, row) {
  //移除数据
  userPermissionGrid.datagrid("deleteRow",rowIndex);
}

7.3 修改回显表格数据

edit:function(){
//选择一条数据进行修改
var row = roleGrid.datagrid('getSelected');
if(row){
    //弹出对话框
    roleDialog.dialog('center').dialog('open');
    //清空表格数据
    userPermissionGrid.datagrid("loadData",[]);
    //修改 -- 回显示数据
    roleForm.form('load',row);
    //回显表格里面的数据
    var tempPermissions = [];
    $.extend(tempPermissions,row.permissions);
    //夹杂到表格里面
    userPermissionGrid.datagrid("loadData",tempPermissions);
}else{
    //提示用户
    $.messager.alert('温馨提示:','请选中一条数据进行修改','info');
    return;
}

注意:
每次经过RequestMapping这些请求的时候,都要执行改方法
如果在修改保存的时候,先在改方法里面查询出数据库Role对象
查询出来 (headImage) 和 当前save(Role role)会进行比对
会把接收数据 去覆盖查询出来数据 。–提交我最终之后的数据
脏数据:一个持久化状态的数据修改非主键的值,在提交的时候会自动更新
如果修改主键值,就会报n-to-n 解决 在修改的时候的时候,关联对象设置null

@ModelAttribute("editRole")
public Role beforeEdit(Long id,String cmd){
    Role role = null;
    if("update".equals(cmd) && id != null && !"".equals(id) ){
        role = roleService.findOne(id);
        //就住这就话:在修改的时候的时候,关联对象设置null,保永生
        role.setPermissions(null);
    }
    return role;
}
SpringBoot基本操作(七)——SpringBoot整合Shiro权限管理(完整demo+界面) SpringBoot2.0笔记 (一)SpringBoot基本操作——环境搭建及项目创建(有demo) (二)SpringBoot基本操作——使用IDEA打war包发布及测试 (三)SpringBoot基本操作——SpringBoot整合SpringDataJpa(有demo) (四)SpringBoot基本操作——SpringBoot使用RedisTemplate整合Redis(有dem... 阅读详情

相关推荐

【SpringBoot】23、SpringBoot中整合Shiro实现权限管理

之前在 SSM 项目中使用过 shiro,发现 shiro 的权限管理做的真不错,但是在 SSM 项目中的配置太繁杂了,于是这次在 SpringBoot 中使用了 shiro,下面一起看看吧 一、简介 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。 三个核心组件: 1、Subject: 即“当前操作用户”。但是,在 Shiro 中,Subje

JACKAL 21万+

【Spring Boot统一功能处理】用户登录权限校验与拦截器,拦截器与传统的校验方式想比有什么好处呢? ? ?我们一起去探索其中的奥秘吧! ! !

【Spring Boot统一功能处理】用户登录权限校验与拦截器,拦截器与传统的校验方式想比有什么好处呢? ? ?我们一起去探索其中的奥秘吧! ! !

程序员良辰 1249

shiro获取登录状态和用户信息

shiro根据session获取登录状态和用户信息

SpringBoot 统一功能处理:用户登录权限校验-拦截器、异常处理、数据格式返回

但是需要考虑的一点是,如果每个异常都这样写,那么工作量是非常大的,并且还有自定义异常,所以上面这样写肯定是不好的,既然是异常直接写 Exception 就好了,它是所有异常的父类,如果遇到不是前面写的两种异常,那么就会直接匹配到 Exception。我们要对一部分方法进行拦截,而另一部分方法不拦截,比如注册方法和登录方法是不拦截的,也就是实际的拦截规则很复杂,使用简单的 aspectJ 表达式无法满足拦截的需求。通过源码分析,可以看出,Sping 中的拦截器也是通过动态代理和环绕通知的思想实现的。

2301_77463738的博客 1702

别再让C盘爆红了!手把手教你将Anaconda虚拟环境迁移到其他盘(附权限问题解决)

本文详细指导如何将Anaconda虚拟环境从C盘迁移到其他驱动器,解决C盘空间不足问题。通过conda config命令和直接修改.condarc配置文件两种方法,确保环境迁移顺利进行,同时提供权限问题解决方案和长期维护技巧,帮助用户高效管理虚拟环境。

weixin_42525289的博客 420

汇川EASY系列之以太网通讯(MODBUS_TCP做从站)

汇川easy系列PLC做MODBUS_TCP从站,,ModbusTCP服务器默认开启,无需设置通信协议(即不需要配置),端口号为“502”。ModbusTCP从站最多支持31个ModbusTCP客户端(ModbusTCP主站)同时连接。

这是一个长期关注工控行业技术的博客,实现0-1的突破,期待您的关注和留言 8861

springboot整合Sa-Token实现登录认证和权限校验(万字长文)

我本来是想写一篇介绍spring boot项目中整合Sa-Token来实现最常用的登录校验和权限认证的,但是写着写着就变成官网的复制机了。我在本篇文章中大量复制了官网上的内容,原本只是想复制一些官方介绍就行了。但是这也从侧面说明了Sa-Token官网制作的确实是比较好的,基本上不需要额外的学习,只要你有做过登录和权限方面的项目经验,再看一遍官网的介绍就能直接上手了。我之前写过一个B2C模式的购物商台,分为用户端和管理端。管理端的登录和权限校验是用spring security写的。

2301_78646673的博客 1万+

在ROS中使用行为树

在ROS中使用行为树 我提供的工程示例文件: demo链接 文章目录在ROS中使用行为树0、 学习本教程的前提1、 behaviorTree 库安装(ROS使用下的安装方式)2、 处理 behaviortree 库并准备好 service 和 ros action2.1 对ROS 的 service 和 action 进行封装,使其在 behaviortree 上使用更加方便。2.2 创建一个 service 和一个 action2.3 创建与决策树相关的数据类型2.4 修改`package.xml`文件2

qq_37416258的博客 6375

【框架篇】统一用户登录权限验证

统一用户登录权限验证功能实现

小杨的博客 1123

8台 × 8卡 910B NPU之顶尖大模型选型分析

本文对比了2026年主流大语言模型在昇腾910B NPU集群上的部署方案。重点评估了GLM5、MiniMax M2.5、Kimi K2.5、DeepSeek V3.2和Qwen 3.5旗舰版等候选模型,从部署需求(显存占用)、能力表现(基准测试、多模态支持)和NPU生态适配度三个维度进行分析。结果显示DeepSeek V3.2综合表现最优:支持BF16/W8A8/INT4量化,在4TB显存环境下可实现2000+ TPS,首token延迟<100ms,且具备官方NPU支持。备选方案Qwen 3.5旗舰版

FeelTouch Labs 754

NOC总线架构拓扑介绍

在开篇里,我们对芯片PPA有了初步的认识。下面,让我们从访存这个简单的问题开始展开介绍芯片基础概念。CPU是怎样访问内存的?简单的答案是,CPU执行一条访存指令,把读写请求发往内存管理单元。内存管理单元进行虚实转换,把命令发往总线。总线把命令传递给内存控制器,内存控制器再次翻译地址,对相应内存颗粒进行存取。之后,读取的数据或者写入确认按照原路返回。再复杂些,当中插入多级缓存,在每一层缓存都未命中的情况下,访问才会最终达到内存颗粒。

元直的博客 5293

用户登录权限校验 JWT【详解】

JWT (json web token)是当前最流行的用户登录权限校验(用户认证鉴权)方案。

朝阳39的博客 2659

筹码峰五句口诀,看懂主力的秘密动作!(附实战图示)

筹码图的价值在于,它不像K线那样容易造假。主力可以骗线,但骗不了筹码分布。主力在不在;是吸筹还是出货;接下来是变盘还是震荡。这五句口诀可以说是“筹码阅读的入门圣经”:单峰坚挺变盘在即,双峰对垒高抛低吸;上峰不移主力在跑,多峰林立行情不止;下峰不移不离不弃,筹码识庄稳中取利!📌市场从来不是靠猜,而是靠看清。筹码,就是主力最真实的痕迹。如果你想学会提前布局、跟庄不被甩,学会看筹码峰——这一步必须打牢!

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1161

springboot项目中使用shiro实现用户登录以及权限的验证

建立spring boot项目。 目录结构这个样子的 项目的jar包依赖 <dependencies> <!--整合shiro subject:用户 security manager:管理所有的用户 realm:连接数据库 --> <dependency> <groupId>org.apache.shiro&lt

日常笔记 | 干货分享 | 毕设源码 | 毕设指导 | 答辩指导 5099

以太网GMAC-RK3568

第 2 章和第 3 章中针对 RMII/RGMII 接口芯片和 USB 以太网两种类型芯片在 SDK 上的配置做详细的描述,第 4 章介绍以太网在 Android 上的相关调用接口。第 5 章提供常见问题的排查建议由于在 RK 系列的 SoC 中内置了以太网 MAC 控制器,所以只需要搭配一颗以太网 PHY 芯片,即可实现以太网卡功能按照规范,即使是不同厂家的 PHY,仍然有一部分寄存器的定义是通用的,只要配置了这些通用的寄存器,基本上 PHY 就可以正常工作代码位置在。

qq_24093081的博客 1942

激光除草技术原理与应用全解析

激光除草技术通过光热、光化学等效应精准破坏杂草组织,核心参数包括功率(20-6000W)、波长(400nm-10.6μm)和脉冲宽度。主要应用于大田作物(如玉米、棉花)、经济作物(烟草、果树)及城市绿化,具有环保(无化学污染)、高效(识别率≥95%)和非接触等优势,但存在设备成本高(20-50万元)、技术门槛高等局限。当前技术融合AI识别、多光谱协同等创新,国产设备如华工智耘已实现95.3%识别精度。虽短期投入较高,但长期可降低30%除草成本,并带来环境效益(每亩减排1.2吨CO₂)

start_up_go的博客 556

springboot+mybatis+shiro项目中使用shiro实现登录用户的权限验证。权限表、角色表、用户表。从不同的表中收集用户的权限、

要实现的目的:根据登录用户、查询出当前用户具有的所有权限、然后登录系统后、根据查询到的权限信息进行不同的操作。 我直接贴代码、在关键的部分我会叙述一下。代码更具有说服力 编写的数据库表 用户表、用户角色关联表、角色表、角色权限关联表、权限表。(这个我就不贴代码了、就是简单的建表) 一个用户可以对应一个角色、也可以对应多个角色(看自己的需求设计了) 一个角色往往有不同的权限。 controller层 package com.zheng.controller; import org.apache.sh

日常笔记 | 干货分享 | 毕设源码 | 毕设指导 | 答辩指导 2017

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

基于maven的SSH项目结合shiro进行登录验证及权限管理功能

数据库关系:需要用到的是function中的code属性角色表用户-角色关系表1.在web包下的pom文件中配置shiro的支持包: &lt;dependency&gt; &lt;groupId&gt;org.apache.shiro&lt;/groupId&gt; &lt;artifactId&gt;shiro-all&lt;/artifactId&gt; &lt;versi...

qq_37385585的博客 837

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

springboot + shiro + cas 实现 登录 + 授权 + sso单点登录 (二)

本篇文章我们将使用 springboot + redis + shiro 开发 角色 + 权限 功能。 1、新建一个maven+springboot项目,我的工程结构为: sso_login 是一个maven工程,里面有两个module,分别是 member 和 order 两个 springboot 的项目,member 主要是登录相关,order主要是以后为了测试 从member系统单...

蓝天之枫 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

shiro框架---关于用户登录和权限验证功能的实现步骤(三)

转载自凌大达的博客,参考原博客地址:[关于用户登录和权限验证功能的实现步骤](https://blog.youkuaiyun.com/wohaqiyi/article/details/79334899) 接上一篇文章shiro框架—关于用户登录和权限验证功能的实现步骤(二) shiro在springboot项目中的配置步骤 1、引入依赖 首先shiro的应用,引入的依赖仅仅只有一个,即下边这个。 <dependency> <groupId>org.apache.shiro</gro

m0_67401228的博客 590

Shiro 安全框架详解二(概念+权限案例实现)

Shiro 安全框架详解二总结内容一、登录认证二、Shiro 授权1. 概念2. 授权流程图三、基于 ini 的授权认证案例实现1. 实现原理图2. 实现代码2.1 添加 maven jar包依赖2.2 编写 ini 配置文件:shiro-authc.ini2.3 使用 Shiro 相关的 ***API*** 完成身份认证四、CRM 中集成 Shiro 授权1. Shiro 权限验证三种方式五、项目中集成 Shiro 认证授权案例实现1. 项目准备2. 代码实现2.1 登录的 EmployeeControl

zzvar的博客 1963

SpringBoot整合Shiro框架实现加密、登录、授权

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。 下面将使用SpringBoot整合Shiro框架实现加密、登录、授权。 1、创建数据表 使用MySQL数据库,创建实例所需的数据表,用户信息表、角色信息表、权限信息表等。 1.1 数据表结构 1.2 数据表脚本 (1)创建数据表脚本。 -- 创建数据表:us.

pan_junbiao的博客 7819

SpringBoot+Shiro+JWT实现「登录认证」和「权限校验」

shiro + jwt 实现认证鉴权

m0_74255195的博客 1999

springboot集成shiro并利用jwt完成登录验证及权限验证

springboot集成shiro并利用jwt完成登录验证及权限验证 最近想在一个后台管理系统加上多角色多权限的功能,了解到了现有的安全框架后决定使用shiro,学习成本相对较低,而shiro默认使用session机制来实现用户的登录验证,而原先项目里面已使用jwt机制,并且前后端项目分离,所以对shiro加以改进。 数据库 首先在有用户表的前提下,需要有角色表和权限表,还有他们的关联表,在此简单的介绍下表结构,相信大家都会创建啦! user id,name role id,name user_ro

JEROCHAN的博客 1349

springboot整合shiro进行权限的验证

springboot整合shiro进行权限的验证 shiro shiro是目前主流的java安全框架,主要用来更便捷的认证,授权,加密,会话管理。 验证的过程是: 1.创建SecurityManager安全管理器; 2.Subject主体带授权信息执行授权,请求到SecurityManager 3.SecurityManager安全管理器调用Authorizer授权 4.Authorizer结合主...

sqlgao22的博客 3857

Shiro框架的用法

一、创建一个Maven项目 二、在pom.xml文件中加入依赖 pom.xml代码: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.

yzx的博客 338
上一篇: Shrio_Shrio集成Spring&Authentication身份认证&Authorizing授权
下一篇: Shiro_项目_权限判断&菜单配置
虞铭轩、
博客等级 码龄7年 3粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值