先上一段shiro中获取数据源的代码,Demo见附件
public class AuthenticationRealm extends AuthorizingRealm {
private static final Logger log = LoggerFactory.getLogger(AuthenticationRealm.class);
@Autowired
private UserMapper userMapper;
@Autowired
private RoleMapper roleMapper;
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
UsernamePasswordToken upToken = (UsernamePasswordToken) token;
String username = upToken.getUsername();
// char[] password = upToken.getPassword();
// log.debug(String.valueOf(password));
// Null username is invalid
if (username == null) {
throw new AccountException("用户名不能为空!");
}
SimpleAuthenticationInfo info = null;
try{
String password = userMapper.getPassword(username);
if (password == null) {
throw new UnknownAccountException("No account found for user [" + username + "]");
}
// if(password.length>2){
// throw new AuthenticationException("More than one user row found for user [" + username + "]. Usernames must be unique.");
// }
info = new SimpleAuthenticationInfo(username, password.toCharArray(), getName());
} catch (RuntimeException e) {
final String message = "There was a SQL error while authenticating user [" + username + "]";
throw new AuthenticationException(message, e);
}
return info;
}
@Override
protected AuthorizationInfo doGetAuthorizationInfo(
PrincipalCollection principals) {
if (principals == null) {
throw new AuthorizationException("PrincipalCollection method argument cannot be null.");
}
String username = (String) getAvailablePrincipal(principals);
Set<String> roleNames = getRoleNameByUserName(username);
Set<String> permissions = new HashSet<String>();
for(String roleName : roleNames){
Role role = roleMapper.getRole(roleName);
for(Permission permission :role.getPermissions()){
permissions.add(permission.getModule()+":"+permission.getPrivilege());
}
}
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(roleNames);
info.setStringPermissions(permissions);
return info;
}
public Set<String> getRoleNameByUserName(String username){
Set<String> roless = new HashSet<String>();
User user = userMapper.getUser(username);
for(Role role:user.getRoles()){
roless.add(role.getName());
log.debug(role.getName());
}
return roless;
}
分享到:
相关推荐
技术栈:Spring Boot、Apache Shiro、MyBatis-Plus、Alibaba Druid、Redis、MySQL、Thymeleaf、Google Guava 安装 将本项目源码导入本地开发工具(如 IntelliJ IDEA ),本地开发工具需要安装 lombok 插件 安装Mysql...
"Shiro+Struts2+MyBatis+Spring"的整合就是这样的一个例子,它将四个各自具有特定功能的框架结合在一起,以实现更强大、灵活的Web应用程序。下面将详细解释这些框架以及它们在整合中的作用。 1. **Apache Shiro**:...
这是一个基于Spring Boot、Apache Shiro、Spring MVC、MyBatis、Quartz和Druid的数据源管理框架的示例项目,名为"renren-security"。这个DEMO提供了完整的权限管理和任务调度解决方案,下面是这些技术栈的核心知识点...
基于 SpringBoot + Spring + SpringMvc + Mybatis + Shiro+ Redis 开发单点登录管理系统 基于 SpringBoot + Spring + SpringMvc + Mybatis + Shiro+ Redis 开发单点登录管理系统 基于 SpringBoot + Spring + ...
本系统(基于SpringBoot+MyBatis+Apache Shiro+Bootstrap+Thymeleaf) 可用于开发所有企业级WEB应用系统(如:各种后台管理系统、CRM、ERP、CMS、OA、博客、论坛等...)。响应式布局,支持大部分浏览器(如:IE9+...
【标题】基于Shiro+Struts2+Hibernate+Spring+Sitemash框架集合的毕业设计管理系统是一种综合运用多种技术实现的企业级应用。这个系统利用这些框架的特性,构建了一个功能完善的管理平台,旨在提升开发效率,优化...
【项目原型】spring+spring mvc+mybatis+shiro+maven+bootstrap+ajax+json+分页+逆向工程 包含现在最流行的技术框架,快速部署各种应用,加入shiro权限框架,安全,美观,你值得拥有
SSM整合,即Spring、Struts2和MyBatis三者的集成,是Java Web开发中常见的一种技术栈组合。这三种框架各自承担不同的职责:Spring作为应用上下文和依赖注入容器,负责管理对象和处理事务;Struts2作为 MVC 框架,...
Spring+SpringMVC+MyBatis+Shiro+MySQL+Redis+Maven+EasyUI+Bootstrap实现的通用权限管理系统。 Spring+SpringMVC+MyBatis+Shiro+MySQL+Redis+Maven+EasyUI+Bootstrap实现的通用权限管理系统 Spring+SpringMVC+...
本后台管理系统,采用流行的框架springMvc+spring+mybatis+shiro+redis+ehcache开发,实现了权限管理(菜单权限、数据权限),solr全文搜索引擎,activiti工作流程引擎,cas单点登陆等功能,完善的代码生成器 后期还...
1,shiro+hibernate4+struts2+spring+easyui+fusioncharts部分bootstrap样式全注解零配置简单权限管理web项目 2,简单shiro权限管控 细度到按钮 3,安装方法按config.properties参数配置你的数据库 4,运行dbsql.sql 5,...
瀑布内容管理系统,采用SpringBoot + Apache Shiro + Mybatis Plus + Thymeleaf 实现的内容管理系统(附带权限管理),是搭建博客、网站的不二之选。致力于开发最精简、实用的CMS管理系统,适合搭建博客、企业网站等
spring boot+apache shiro+mybatis+bootstrap+jquery开发文件后台管理系统 项目描述 根据 若依(http://www.ruoyi.vip/login) 项目 新增文件上传 修改 预览 功能。 支持播放文件顺序拖放 -》 通道管理-》 编辑 ...
由于项目需要从网上搜集的相关的集成框架,很多都是部分集成,一直没有找到整个流程全部集成好的,所以将集成好的框架分享出来供大家学习。 主要实现SSO、后台RBAC角色认证管理。 下载后需要自行修改配置,项目包内...
Maven项目构建: SpringMVC + Mybatis + SpringSecurity(权限控制到方法按钮) + Rest(服务) + Webservice(服务) + Quartz(定时调度)+ Lucene(搜索引擎) + HTML5 bootstrap 源码详细地址:...
spring+spring mvc+mybatis+shiro+easyui+jquery生产管理ERP系统源码,系统经多次测试,运行无误,大家放心下载
"shiro+SpringMVC+Spring+mybatis+maven+mybatis 自动刷新+Quartz scheduler 定时器"是一个常见的技术栈组合,每个组件都有其特定的功能和作用。 1. **Shiro**:Apache Shiro 是一个强大且易用的Java安全框架,提供...
采用easyui+shiro+springmvc+spring+mybatis+mysql easyui作视图层 shiro作权限控制 springmvc作控制层 spring作容器与事务管理 mybatis作数据访问层 mysql作数据存储
基于IDEA+Spring+SpringMVC+Mybatis+Redis+Shiro+Maven实现的教务管理系统+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于IDEA+Spring+SpringMVC+...