shiro 的基本使用
1. maven 依赖的引入
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.4.0</version>
</dependency>
2. shiro 的配置
#### 1. SecurityManager 的配置
@Bean
public SecurityManager securityManager( ) {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
securityManager.setRealm(myShiroRealm());
return securityManager;
}
2 myShiroRealm的配置
@Bean
public MyShiroRealm myShiroRealm() {
MyShiroRealm myShiroRealm = new MyShiroRealm();
return myShiroRealm;
}
public class MyShiroRealm extends AuthorizingRealm {
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
User user = ((User) principalCollection.getPrimaryPrincipal());
System.out.println(user);
SimpleAuthorizationInfo simpleAuthorizationInfo = new SimpleAuthorizationInfo();
//添加角色
simpleAuthorizationInfo.addRole(user.getUsername());
//添加权限
simpleAuthorizationInfo.addStringPermission("create");
return simpleAuthorizationInfo;
}
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken;
String username = token.getUsername();
char[] password = token.getPassword();
User user = ...; // 查询数据库
System.out.println(user.getUsername());
SimpleAuthenticationInfo simpleAuthenticationInfo =
new SimpleAuthenticationInfo(user, user.getPassword(), getName());
return simpleAuthenticationInfo;
}
3. Filter工厂的配置
//Filter工厂,设置对应的过滤条件和跳转条件
@Bean
public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
shiroFilterFactoryBean.setSecurityManager(securityManager);
Map<String,String> map = new HashMap<String, String>();
//登出
map.put("/logout","logout");
map.put("/doLogin", "anon");//对所有用户认证
map.put("/**","authc");
//登录
shiroFilterFactoryBean.setLoginUrl("/login.html");
//首页
shiroFilterFactoryBean.setSuccessUrl("/index");
//错误页面,认证不通过跳转
shiroFilterFactoryBean.setUnauthorizedUrl("/error");
shiroFilterFactoryBean.setFilterChainDefinitionMap(map);
return shiroFilterFactoryBean;
}
4. @RequiresRoles
@RequiresPermissions
注解的配置
@Bean
public DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator(){
DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
advisorAutoProxyCreator.setProxyTargetClass(true);
return advisorAutoProxyCreator;
}
@Bean
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
return authorizationAttributeSourceAdvisor;
}

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
12月12日云栖精选夜读 | Python 10大谬论,你可能对Python存在的一些误解!
谬误 #1: Python 是一门新语言 伴随着所有的初创公司正在使用它以及孩子们最近也在学习它的事实,这个谬误为何仍然存在是可以理解的。实际上 Python 已经 超过23岁了, 它最初发布于1991年, 早于 HTTP 热点热议 Python 10大谬论,你可能对Python存在的一些误解! 作者:技术小能手发表在:机器学习算法与Python学习 阿里巴巴智能监控新场景的探索 作者:技术小能手 聊一聊 | IPv6 来了,哪些行业会发生美好的改变? 作者:技术小能手发表在:阿里技术 知识整理 Python | 7招教你识别一个网站是否是Django后台 作者:技术小能手发表在:Python专栏 golang标准库中的encoding/gob包 作者:laijh_go MySQL的表碎片处理 作者:江雪月青发表在:袋鼠云技术团队 MySQL高可用方案之DRBD+MySQL+RHCS(上) 作者:powdba MySQL高可用方案之DRBD+MySQL+RHCS(下) 作者:powdba 美文回顾 二十分钟教你如何将区块链应用与函数计算相结合 作者:泽尘 对象检测(object det...
-
下一篇
Java-override重写与overload重载
重载(overload) 在同一个类中,方法名相同,参数列表不同(参数个数,参数顺序,参数类型) 仅仅返回类型不同不足以称为方法的重载(重载与方法返回类型无关) 仅仅参数变量名称不同是不可以的 重写(override) 子类继承父类,方法名相同,参数列表相同,权限修饰符作用范围要大于父类的范围 父类用public修饰的方法被重写,子类中方法的修饰符只能是public 静态方法不能被重写
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- Windows10,CentOS7,CentOS8安装Nodejs环境
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS8编译安装MySQL8.0.19
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- MySQL数据库在高并发下的优化方案
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果