package com.myShiro.test;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.IncorrectCredentialsException;
import org.apache.shiro.authc.LockedAccountException;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.realm.jdbc.JdbcRealm;
import org.apache.shiro.subject.Subject;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
public class JdbcReamTest {
public static void main(String[] args) {
System.out.println("Hello shiro!");
MysqlDataSource datasource = new MysqlDataSource();
datasource.setUser("root");
datasource.setPassword("root");
datasource.setServerName("localhost");
// datasource.setDriverClassName("com.mysql.jdbc.Driver");
datasource.setUrl("jdbc:mysql://localhost:3306/test");
// datasource.setMaxActive(10);
org.apache.shiro.realm.jdbc.JdbcRealm jdbcRealm = new JdbcRealm();
jdbcRealm.setDataSource(datasource);
jdbcRealm.setPermissionsLookupEnabled(true);
jdbcRealm
.setAuthenticationQuery("SELECT PASSWORD FROM account WHERE name = ?");
jdbcRealm
.setUserRolesQuery("SELECT NAME FROM role WHERE id =(SELECT roleId FROM account_role WHERE userId = (SELECT id FROM account WHERE NAME = ?))");
jdbcRealm
.setPermissionsQuery("SELECT NAME FROM permission WHERE id in (SELECT permissionId FROM permission_role WHERE (SELECT id FROM role WHERE NAME = ?))");
DefaultSecurityManager security = new DefaultSecurityManager(jdbcRealm);
SecurityUtils.setSecurityManager(security);
Subject currentUser = SecurityUtils.getSubject();
if (!currentUser.isAuthenticated()) {
UsernamePasswordToken token = new UsernamePasswordToken("ynp",
"111111");
token.setRememberMe(true);
try {
currentUser.login(token);
System.out.println("login successfully");
} catch (UnknownAccountException uae) {
System.out.println("There is no user with username of "
+ token.getPrincipal());
} catch (IncorrectCredentialsException ice) {
System.out.println("Password for account "
+ token.getPrincipal() + " was incorrect!");
} catch (LockedAccountException lae) {
System.out.println("The account for username "
+ token.getPrincipal() + " is locked. " +
"Please contact your administrator to unlock it.");
}
// ... catch more exceptions here (maybe custom ones specific to
// your application?
catch (AuthenticationException ae) {
// unexpected condition? error?
}
}
// say who they are:
// print their identifying principal (in this case, a username):
System.out.println("User [" + currentUser.getPrincipal()
+ "] logged in successfully.");
// test a role:
if (currentUser.hasRole("admin")) {
System.out.println("May the admin be with you!");
} else {
System.out.println("Hello, mere mortal.");
}
// test a typed permission (not instance-level)
if (currentUser.isPermitted("write")) {
System.out.println("You can write!.");
} else {
System.out.println("Sorry, lightsaber rings are for schwartz masters only.");
}
// a (very powerful) Instance Level permission:
if (currentUser.isPermitted("winnebago:drive:eagle5")) {
System.out
.println("You are permitted to 'drive' the winnebago with license plate (id) 'eagle5'. "
+
"Here are the keys - have fun!");
} else {
System.out
.println("Sorry, you aren't allowed to drive the 'eagle5' winnebago!");
}
// all done - log out!
currentUser.logout();
}
}
相关推荐
使用Shiro的JdbcRealm实现查询数据库进行身份认证示例源码.zip
使用Shiro的JdbcRealm实现查询数据库进行身份认证示例源码
Shiro----JDBCRealm
了解Shiro中的JdbcRealm ,通过一个登录案例开始
shiro demo 实例 jdbcRealm
shiro demo 源码里面2中realm 一种是jdbcRealm 一种是自定义realm 有sql脚本。请看db文件夹下的readme.txt 有关这个项目的详细介绍,使用了简单的标签库权限控制当做例子
Shiro学习2----spring boot整合(JdbcRealm)
Shiro学习2----spring boot整合(JdbcRealm)
Transformer凭什么取代RNN?深入拆解自注意力机制与梯度消失问题的终极对决
本文深入探讨了Transformer如何通过自注意力机制解决RNN的梯度消失问题,成为自然语言处理领域的新标准。通过对比RNN和Transformer的架构差异,揭示了自注意力机制在并行计算、长期依赖处理等方面的技术优势,并提供了实际任务中的性能对比数据。
大智慧L2实时api接口的逐笔委托功能执行代码分享
用过l2行情接口的投资者应该都了解大部分的接口都是有逐笔委托功能的,那么大智慧L2实时api接口也有着很强大的逐笔委托功能,投资者可以通过这个逐笔委托功能可以看到一个股票的每天出现的全部委托指令,那么在这个逐笔委托功能里包含了委托价格、委托时间、委托量和委托方向四个要素!那么接下来小编就分享一下大智慧L2实时api接口的逐笔委托功能执行代码!那么在这里提个醒:投资者可以在大智慧L2实时api接口进行设置过滤,在逐笔委托列表里,就仅仅只会显示超过设置委托量或委托额的委托单,而不再显示小单。
Shiro内置Realm——JdbcRealm
JdbcRealm需要引入数据库驱动和数据源 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.14</version> </dependency> <dependency> <groupId>com.ali..
Ubuntu 24.04 LTS安装WPS Office 2025冬季版全攻略(附字体缺失解决方案)
本文提供了在Ubuntu 24.04 LTS系统上安装WPS Office 2025冬季版的完整指南,详细对比了dpkg、Snap和GUI三种安装方式的优劣。针对安装后常见的中文字体缺失、思源黑体粗细异常等核心问题,给出了从原理分析到手动补充字体库、修改字体配置文件的深度解决方案,确保WPS Office在Linux环境下获得最佳使用体验。
Shiro入门(三)Shiro异常和JdbcRealm
前言 本章讲解Shiro的异常和JdbcRealm的相关知识 方法 1.回顾 在之前,我们完成了shiro的登陆验证,不知道大家有没有试过写错密码或者用户名会出现什么情况? 是会出现诸如“用户登陆失败!”的字眼吗?显然不是的!!他将会抛出异常。 还有,我们是通过在shiro配置文件中配置users来进行用户的认证,那么大多数情况下,我们都是在数据库中进行比对,验证登录。...
win x64下安装oracle 12c出现[INS-30131]报错的解决方案
问题: win x64下安装oracle 12c出现[INS-30131]报错的解决方案 安装oracle11g碰到“无法访问临时位置”的问题,详细信息如下: INS-30131] 执行安装程序验证所需的初始设置失败。 原因 - 无法访问临时位置。 操作 - 请确保当前用户具有访问临时位置所需的权限。 附加信息: - 所有节点上的框架设置检查都失败
HANA-公司间销售ICS-IDOC系统配置-保姆级配置文档
合作伙伴编号:这个客户表示收票方(销售公司在生产公司中所对应的客户代码,卖方开票,买方收票),也就是咱们在配置消息类型输出的时候合作伙伴的类型的一个具体的客户编码,这个是站在发货工厂的角度去看的,也就是EDI 输出的 BP 合作伙伴的编号;在项目实施过程中经常会遇到关联方交易的问题,有公司间采购的业务场景,也会存在公司间销售的业务场景,本文将着重讲解公司间销售在SAP系统中的实现场景。在这个过程中,销售公司向客户开票产生应收,而生产公司向销售公司开票产生自己的应收,同时销售公司向生产公司产生应付。
Shiro内置JdbcRealm使用
Shiro内置JdbcRealm使用
基于Keil软件实现对射式红外传感器计次 (江协科技HAL库)
用HAL库复现江协科技,让嵌入式学习之路更顺畅。
最全Shiro教程,一篇学会Shiro权限管理
声明:本文是博主观看bilibili上Java涛哥视频学习的Shiro框架所整理笔记,学完思路清晰,原文代码大致相同,原视频链接附上,方便以后学习查看。 Shiro Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在 JavaSE 环境,也可以用在 JavaEE 环境。 一、权限管理 不同身份的人进入系统所完成的操作不同,如下图,当一个系统包含左侧所有菜单功能时,要求不同人员登录展示不
【LAMMPS学习】八、基础知识(2.1)2D模拟
此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。LAMMPS 源代码分发的examples目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各种模拟。
YOLOv11改进策略【Neck】| arXiv 2025 分层多头注意力HMHA 子空间拆分提多样 + 通道重排降冗余,强化目标检测精度
HMHA(Hierarchical Multi-Head Attention,分层多头注意力)旨在解决传统多头注意力(MHA)在图像恢复任务中的核心缺陷——特征冗余。传统MHA将通道均匀拆分给各个头,导致不同头学习的子空间信息相似,进而出现多头关注同一区域、忽略退化区域修复的问题,限制了模型的特征表达能力。HMHA通过“分层子空间拆分+通道重排序”策略,让每个头学习差异化、互补的上下文特征,从根源上缓解冗余,提升图像恢复任务中对复杂退化场景的特征捕捉能力。
shiro默认拦截所有_shiro工具类详解1
Shiro架构图从外部来看Shiro,即从应用程序角度来观察如何使用Shiro完成工作。从Shiro内部看Shiro的架构Shiro涉及常见名词Shiro配置文件详解ini文件放在classpath下,shiro会自动查找。其中格式是key/value 键值对配置。INI配置文件一般适用于用户少且不需要在运行时动态创建的 情景下使用。 ini文件中主要配置有四大类:main,users,roles...
lwip-2.0.3
lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。
apache shiro jar包_077、Shiro安全框架
一、Shiro简介及架构图介绍Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。 对于任何一个应用程序,Shiro都可以提供全面的安全管理服务。其不仅可以用在JavaSE环境,也可以用在JavaEE环境。从外部来看Shiro,即从应用程序角度来观察如何使用Shiro完成工作。如图:从Shiro内部看Shiro的架构二、Shiro涉及常见...
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况
主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。
springboot整合shiro
springboot整合shiro
IDEA的使用指南
IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.
shiro用户加密默认方式_shiro 安全框架(1)
一.简介Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和 会话管理等功能。对于任何一个应用程序,Shiro都可以提供全面的安全管理服务。其不仅可 以用在JavaSE环境,也可以用在JavaEE环境。二.架构图1.从外部来看Shiro,即从应用程序角度来观察如何使用Shiro完成工作。如 下图:2.2.从Shiro内部看Shiro的架构,如下图所示:三、Shiro配...
Shiro 基本使用总结
1.简介Apache Shiro是一个强大且易用的 Java 安全框架,执行身份验证、授权、密码学和会话管理。 认证、授权:认证简单的说,就是登录的时候判断你的用户名和密码是否完全匹配,就是证明你是你。授权,是在认证的基础之上,进行角色和权限的授予。权限决定了一个用户可以进行怎样的操作。角色、权限:权限定义了一个用户是否可以执行某个操作。角色就是一组权限的集合。我们通常是把一组权限绑定到一种角色上,
shiro如何保证session不失效_Shiro安全框架学习--115天学习
训练大纲(第067天)第133次(shiro)学习主题:shiro学习目标:1 掌握shiro架构图2 掌握shiro配置文件3 掌握JDBCRealm对应作业Shiro-简介及架构图介绍(对应01-02视频)Shiro是什么,它的作用是什么?Shiro 是一个强大而灵活的开源安全框架,它干净利落处理身份认证,授权,企业会话管理和加密.从外部看Shiro,大体上分为哪几部分,每部分的作用是什么?主...
Shiro
Shiro Apache Shiro是一个强大且易用的Java安全框架,有身份验证、授权、密码学和会话管理。 使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序 到最大的网络和企业应用程序。 Shiro的四大基石 Shiro 开发团队称为“应用程序的四大基石” ——身份验证,授权,会话管理和加密作为其目标。 Authentication(身份认证): 有...
apache shiro jar包_框架学习:Shiro 安全框架(一)
Apache Shiro是一个强大易用的 Java 安全框架 ,提供了认证、授权、加密和会话管理等功能。对于任何一个应用程序, Shiro 都可以提供全面的安全管理服务。其不仅可以用在 JavaSE 环境,也可以用在 JavaEE 环境。Shiro架构图从外部看Shiro,大体上分为:①从 Shiro 内部看 Shiro 的架构①subject:主体,与应用交互的用户,主体要访问系统,系统需要对主...
shiro密码正确也会匹配错误_Shiro安全框架
Shiro简介:Apache Shiro 是强大易用Java的安全框架,提供了认证、授权、加密和会话管理等功能。Shiro的应用场景:对于任何一个应用程序,Shiro都能提供全面的安全管理服务,不仅可以用在javaSE环境还可以用在javaEE环境。Shiro的架构图:从外部来看Shiro,即从应用程序角度来观察使用Shiro完成工作。从外部看Shiro分为四部分:ApplicationCode-...
Shiro初步学习-01
Shiro初步学习-01 1、Shiro简介 用户权限管理一般是对用户页面、按钮的访问权限管理。Shiro 框架是一个强大且易用的 Java 安全框架,执行身份验证、授权、密码和会话管理,对于 Shiro 的介绍这里就不多说。本篇博客主要是了解 Shiro 的基础使用方法,在权限管理系统中集成 Shiro 实现登录、url 和页面按钮的访问控制。 2、主要功能 三个核心组件:Subject, SecurityManager 和 Realms. Subject:即“当前操作用户”。但是,在Shiro中,Sub
624



被折叠的 条评论
为什么被折叠?



