Shiro框架配置-applicationContext里面的(仅提供借鉴)
<!-- 配置自定义realm -->
<bean id="shiroAuthRealm" class="com.sykj.realm.ShiroAuthRealm">
<!-- 配置加密 -->
<property name="credentialsMatcher">
<bean class="org.apache.shiro.authc.credential.HashedCredentialsMatcher">
<property name="hashAlgorithmName" value="MD5"></property> <!-- 加密算法的名称 -->
<property name="hashIterations" value="1024"></property> <!-- 配置加密的次数 -->
</bean>
</property>
</bean>
<!-- 配置安全管理器 -->
<!-- shiro的核心组件:securityManager -->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<!-- 配置缓存 -->
<property name="cacheManager" ref="cacheManager" />
<!-- 配置域realm,用户名,密码,角色都保存在域里,完成登录校验、权限校验的自定义JAVA类 -->
<property name="realm" ref="shiroAuthRealm" /> <!-- 步骤4中配置的bean id -->
</bean>
<!-- 配置拦截规则 -->
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="securityManager" ref="securityManager"/>
<property name="loginUrl" value="/login.html"/>
<property name="successUrl" value="/succes.html"/>
<property name="unauthorizedUrl" value="/unauth.html"/>
<!-- 拦截规则 -->
<property name="filterChainDefinitions">
<value>
/login.html = anon <!-- anon 匿名访问 不登录允许访问-->
/account/login = anon
/** = authc <!-- authc 授权访问(必须登录后才能访问) -->
<!-- roles[角色名] 权限的控制 -->
/account/queryall=roles[admin]
</value>
</property>
</bean>
以下 我自己看得懂的
realm类里面的 任务借鉴时候用
package com.sykj.realm;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.LockedAccountException;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
import org.apache.shiro.util.ByteSource;
import org.springframework.beans.factory.annotation.Autowired;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.sykj.bean.Account;
import com.sykj.mapper.AccountMapper;
public class ShiroAuthRealm extends AuthorizingRealm{--使用权限框架一定是要继承这个
@Autowired
private AccountMapper accountMapper;
/**
* 访问权限校验
*/
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
// TODO Auto-generated method stub
Account account=(Account) principals.getPrimaryPrincipal();
//根据账号或者id调用service的方法查找该用户的所有角色
Set<String> roles=new HashSet<>();
roles.add(account.getAccname());--这其实是获取权限的 我只是为了验证才写的名字(简单一点 我看得懂)
SimpleAuthorizationInfo info=new SimpleAuthorizationInfo();
info.addRoles(roles);
return info;
}
/**
* 登录校验
*/
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken arg0) throws AuthenticationException {
// TODO Auto-generated method stub
UsernamePasswordToken token=(UsernamePasswordToken) arg0;//传过来的token对象
String accname= token.getUsername();//取到账号
QueryWrapper wrapper=new QueryWrapper();
wrapper.eq("accname", accname);
Account account= accountMapper.selectOne(wrapper);
System.out.println(account+"realm里面的account");
if (account ==null) {//数据库里面的数据
throw new UnknownAccountException();//抛出账号不存在的异常
}
if (account.getAcczt().equals("0")) {//如果等于0就是账户被锁定
throw new LockedAccountException();
}
ByteSource bs=ByteSource.Util.bytes("admin");//用传过来的名字当做加盐
//父类 子类
AuthenticationInfo info=new SimpleAuthenticationInfo(account, account.getAccpassword(),bs, getName());
return info;
}
}
Shiro框架配置-applicationContext里面的(仅提供借鉴)的更多相关文章
- shiro框架-配置
才开始学没有什么理解分享一个博客写的比较详细 借鉴大佬的:https://www.cnblogs.com/maofa/p/6407102.html@阿发仔 https://blog.csdn.net ...
- ssm框架配置过程
1.pom.xml配置 1.1<build>标签中配置<plugins>和<resources>,即插件和资源文件 1.2 <properties>标签 ...
- 记录心得-shiro框架demo示例
从懵懂到了解,再到熟悉,是一个进步的过程! 先撸代码,跑起来看效果,再做详细的介绍,开始干活! 1,先列出工程目录结构,自己需要创建对应层级的程序和相关配置文件. 2,导入maven依赖的jar包.打 ...
- shiro框架
Shiro Shiro简介 SpringMVC整合Shiro,Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能. Authentication:身份认证/登录,验证用 ...
- Spring Boot干货系列:(七)默认日志框架配置
Spring Boot干货系列:(七)默认日志框架配置 原创 2017-04-05 嘟嘟MD 嘟爷java超神学堂 前言 今天来介绍下Spring Boot如何配置日志logback,我刚学习的时候, ...
- 简单两步快速实现shiro的配置和使用,包含登录验证、角色验证、权限验证以及shiro登录注销流程(基于spring的方式,使用maven构建)
前言: shiro因为其简单.可靠.实现方便而成为现在最常用的安全框架,那么这篇文章除了会用简洁明了的方式讲一下基于spring的shiro详细配置和登录注销功能使用之外,也会根据惯例在文章最后总结一 ...
- shiro框架的四中权限控制方式
https://www.cnblogs.com/cocosili/p/7103025.html 一.在自定义的realm中进行权限控制 在applicationContext.xml文件中添加 /a ...
- Shiro框架 (原理分析与简单实现)
Shiro框架(原理分析与简单实现) 有兴趣的同学也可以阅读我之前分享的:Java权限管理(授权与认证)CRM权限管理 (PS : 这篇博客里面的实现方式没有使用框架,完全是手写的授权与认证,可以 ...
- Shiro权限验证代码记录,正确找到shiro框架在什么地方做了权限识别
权限验证方式的验证代码: org.apache.shiro.web.servlet.AdviceFilter这个类是所有shiro框架提供的默认权限验证实例类的父类 验证代码: public void ...
随机推荐
- 基数排序-LSD
这个最低位优先的基数排序,非常适合移植到硬件设备中,所以,我们提供一个C源码 —————————————————————————————————————— #include <stdio.h&g ...
- Python3.0科学计算学习之函数
函数 函数允许程序的控制在不同的代码片段之间切换,函数的重要意义在于可以在程序中清晰地分离不同的任务,将复杂的问题分解为几个相对简单的子问题,并逐个解决.即"分而治之". Pyth ...
- .NET Core 事件总线,分布式事务解决方案:CAP 基于Kafka
背景 相信前面几篇关于微服务的文章也介绍了那么多了,在构建微服务的过程中确实需要这么一个东西,即便不是在构建微服务,那么在构建分布式应用的过程中也会遇到分布式事务的问题,那么 CAP 就是在这样的背景 ...
- .htaccess使用方法介绍
1..htaccess文件使用前提 .htaccess的主要作用就是实现url改写,也就是当浏览器通过url访问到服务器某个文件夹时,作为主人,我们可以来接待这个url,具体地怎样接待它,就是此文件的 ...
- java实现栈的简单操作
public class stract { public static void main(String[] args) { MyStack stack = new MyStack(20); stac ...
- Respone弹窗
Response.Write("<script>window.open('default.aspx?iID=" + GridView1.DataKeys[GridVie ...
- PyCharm:no module named * 解决方法
1.成功安装模块,无法导入 今天安装完模块pyppeteer,pycharm导入失败,从python的Lib下可以清楚的看到已经安装成功 2.添加当前python环境,不使用默认项目的环境 file& ...
- Nginx 配置文件优化
user www www; #用户&组 worker_processes auto; #通常是CPU核的数量存储数据的硬盘数量及负载模式,不确定时将其设置为可用的CPU内核数(设置为“auto ...
- vue的计算属性computed和监听器watch
<template> <div> this is A.vue <br> <!--计算属性--> <label for="msg" ...
- sitecore8.2 基于相对路径查询item
当前项目: bar (path: /sitecore/content/home/foo/bar) 查询: query:./child/grandchild 结果: grandchild (path: ...