shiro第四讲 JDBC Realm使用 (QQ14280784)
第一步:进入eclipse新建一个shiro的maven工程
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `roles_permissions`
-- ----------------------------
DROP TABLE IF EXISTS `roles_permissions`;
CREATE TABLE `roles_permissions` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`role_name` varchar(100) DEFAULT NULL,
`permission` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_roles_permissions` (`role_name`,`permission`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of roles_permissions
-- ----------------------------
-- ----------------------------
-- Table structure for `users`
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`username` varchar(100) DEFAULT NULL,
`password` varchar(100) DEFAULT NULL,
`password_salt` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_users_username` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of users
-- ----------------------------
INSERT INTO `users` VALUES ('1', 'zhang', '123', null);
INSERT INTO `users` VALUES ('2', 'jin', '123', null);
INSERT INTO `users` VALUES ('3', 'li', '456', null);
-- ----------------------------
-- Table structure for `user_roles`
-- ----------------------------
DROP TABLE IF EXISTS `user_roles`;
CREATE TABLE `user_roles` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`username` varchar(100) DEFAULT NULL,
`role_name` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_user_roles` (`username`,`role_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of user_roles
-- ----------------------------
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.25</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>0.2.23</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
</dependencies>
-------------
-------------
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.DisabledAccountException;
import org.apache.shiro.authc.ExcessiveAttemptsException;
import org.apache.shiro.authc.ExpiredCredentialsException;
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.config.IniSecurityManagerFactory;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.Factory;
public class MyTest {
public static void main(String[] args) {
// 1、获取 SecurityManager 工厂,此处使用 Ini 配置文件初始化 SecurityManager
Factory<org.apache.shiro.mgt.SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
// 2、得到 SecurityManager 实例 并绑定给 SecurityUtils
org.apache.shiro.mgt.SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
// 3、得到 Subject 及创建用户名/密码身份验证 Token(即用户身份/凭证)
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken("li", "123");
try {
subject.login(token);
if(subject.isAuthenticated()){
System.out.println("成功!");
}else{
System.out.println("失败!");
}
subject.logout();
}catch (IncorrectCredentialsException e) {
System.out.println("登录密码错误. Password for account "
+ token.getPrincipal() + " was incorrect.");
} catch (ExcessiveAttemptsException e) {
System.out.println("登录失败次数过多");
} catch (LockedAccountException e) {
System.out.println("帐号已被锁定. The account for username "
+ token.getPrincipal() + " was locked.");
} catch (DisabledAccountException e) {
System.out.println("帐号已被禁用. The account for username "
+ token.getPrincipal() + " was disabled.");
} catch (ExpiredCredentialsException e) {
System.out.println("帐号已过期. the account for username "
+ token.getPrincipal() + " was expired.");
} catch (UnknownAccountException e) {
System.out.println("帐号不存在. There is no user with username of "
+ token.getPrincipal());
}
}
}
shiro第四讲 JDBC Realm使用 (QQ14280784)相关推荐
- shiro第一讲 没有Realm的实例
第一步:进入eclipse新建一个shiro的maven工程 第二步:修改shiro工程的编码为utf-8 第三步:加入pom中的内容 <dependencies> <depe ...
- JAVA设计模式第四讲:行为型设计模式
设计模式(design pattern)是对软件设计中普遍存在的各种问题,所提出的解决方案.本文以面试题作为切入点,介绍了设计模式的常见问题.我们需要掌握各种设计模式的原理.实现.设计意图和应用场景, ...
- SLAM十四讲笔记1
文章目录 ch02 初识SLAM ch02-01 经典视觉SLAM框架 ch02-02 SLAM问题的数学表述 ch03 三维空间刚体运动 ch03.01 旋转矩阵:点和向量,坐标系 01 向量a在线 ...
- C#精髓 第四讲 GridView 72般绝技
说明:准备出一个系列,所谓精髓讲C#语言要点.这个系列没有先后顺序,不过尽量做到精.可能会不断增删整理,本系列最原始出处是csdn博客,谢谢关注. C#精髓 第四讲 GridView 72般绝技 作者 ...
- OC基础第四讲--字符串、数组、字典、集合的常用方法
OC基础第四讲--字符串.数组.字典.集合的常用方法 字符串.数组.字典.集合有可变和不可变之分.以字符串为例,不可变字符串本身值不能改变,必须要用相应类型来接收返回值:而可变字符串调用相应地方法后, ...
- Javascript基础与面向对象基础~第四讲 Javascript中的类对象
今天来说JS中如何实现类(class),事实上本应该昨天晚上写的,可我失言了,在些说一声"抱歉"!JS中的类是JS面向对象的基础,也是我最拿手的东西,你写的代码能否提高一个层次,一 ...
- 开发人员应该对IIS理论层的知识了解的多一些~第四讲 HttpModule中的几大事件
本文主要介绍HttpModule,它在一个网页请求过程中是一个怎样的过程是我们要知道的,在网页加载过程中HttpModule在何时被执行也是我们要知道的,以及,HttpModule在网页请求过程中,所 ...
- linux自学视频资料第四讲:目录
大家下午好! 今天linux自学视频第四讲:目录 这一讲大家要记住linux中的文件的权限(这在第三讲中有讲到)和目录的权限 首先大家要记住:u g o 这三个字母的定义 然后是 r w x 这三个 ...
- [概统]本科二年级 概率论与数理统计 第四讲 连续型随机变量
[概统]本科二年级 概率论与数理统计 第四讲 连续型随机变量 连续型随机变量的基本概念 均匀分布 指数分布 正态分布 推导正态分布的密度(de Moivre-Laplace定理) 标准正态分布 一般的 ...
最新文章
- 字符编码_Windows资料
- 如何修改world 2007文档结构图的字体 ???
- Oracle创建序列的sql语句,【Oracle学习】之 序列(Sequence)
- 1022 词法分析程序总结
- SAP CRM One order里user status和system status的mapping逻辑
- 数据结构 - 单调栈、单调队列
- java使用内部类的好处及其初始化
- 【转载】 Single sign on
- RS485无线通讯模块工作原理详解
- RDCMan安装使用说明
- 计算机毕业设计ssm基于vue的健康餐饮管理系统的设计与实现
- 深度学习安装笔记(二)显卡、显卡驱动、CUDA 的关系以及显卡驱动升级
- vue中json数据格式化
- Fxfactory插件:复古电影调色插件Sheffield Softworks Vintage
- 成功安装python后、在dos命令行窗口中-python在WIN运行时去掉DOS窗口显示的方法
- 用python编阶层
- 【主色提取】模糊C均值(FCM )聚类算法和彩色图像快速模糊C均值( CIQFCM )聚类算法
- 简单python脚本实例画图-Python使用matplotlib简单绘图示例
- 2022王道考研系列复习指导书更新及勘误
- 十大B2C网站购物车的流程设计对比分析