Shiro安全框架入门

Shiro框架中,有3个重要的概念

1.Subject

类似于我们平常所使用的“用户”概念,但用户常常是指人,而Subject还可能是其他的第三方软件等等,所以在这里用的是Subject这一概念而不是User


2.SecurityManager

Shiro架构中的核心,为Subject管理安全操作


3.Reamls

连接Subject和SecurityManager的桥梁,相当于dao层,配置Shiro时,最起码要有一个Reamls


小demo:

Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
AuthenticationToken token = new UsernamePasswordToken("marksg","password");
Subject currentUser = SecurityUtils.getSubject();
currentUser.login(token);


1.新建factory,加载classpath下的shiro.ini配置文件,文件内容在后面给出。

2.securityManager实例化。

3.使securityManager可访问

4.获取用户名和密码

5.获取当前用户

6.login


Shiro.ini:

[user]
residentskroob = 12345, president


darkhelmet = ludicrousspeed, darklord, schwartz


lonestarr = vespa, goodguy, schwartz


mark sg=password,test



[roles]


admin = *


schwartz = lightsaber:*


goodguy = winnebago:drive:eagle5
[urls]
test/target=roles[admin]
test/target1=anno
test/target2=authc

其中,user的命名规则为:

username=password,role1,role2......roleN

roles的命名规则为:

rolename=Perm1,Perm2,......PermN


所以,上面的ini文件中

mark sg=password,test,admin
<pre name="code" class="plain">admin = *

 的意思是,mark sg这principal(username)的credential(password)为password,拥有的角色为test,admin 

其中admin有"*"这一权限

[urls]下表示的含义为:

(1)test/target0=roles[admin],表示路径test/target1只有拥有admin这一ROLE的用户才可以访问

(2)test/target1=anno,表示路径test/target1是所有人都可以访问的路径

(3)test/target2=authc,表示路径test/target2只有通过了登录验证的用户才有权限可以访问

那么回到代码中的第4行

<pre name="code" class="java">AuthenticationToken token = new UsernamePasswordToken("marksg","password");
Subject currentUser = SecurityUtils.getSubject();
currentUser.login(token);

 

因为我们已经读取了ini文件了,所以这里的我们的login操作时,

实际上市将token这一对象传入,然后检查是否有符合的principal和credential都符合的情况

如果没有则会报错,有的话则成功login

在Login以后可以用currentUser.getPrincipal()输出当前的subject



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值