SHiro自定义Realm
首先在resource下新建user.ini
1[users]
2jiuyue=12345,admin
3[roles]
4admin=user:delete,user:update
然后测试类下新建IniRealmTest测试类,跟前面不一样的是需要
1 IniRealm iniRealm =new IniRealm("classpath:user.ini");
new IniRealm对象将自定义的user.ini配置到IniRealm作为参数进行实例化。
1/**
2 * Create bySeptember
3 * 2018/10/25
4 * 19:51
5 */
6public class IniRealmTest {
7 @Test
8 public void testAuthentication(){
9 IniRealm iniRealm =new IniRealm("classpath:user.ini");
10
11 //1.构建SecurityManager环境
12 DefaultSecurityManager defaultSecurityManager= new DefaultSecurityManager();
13 defaultSecurityManager.setRealm(iniRealm);
14 SecurityUtils.setSecurityManager(defaultSecurityManager);
15 Subject subject = SecurityUtils.getSubject();
16 //2.主体提交授权认证
17 UsernamePasswordToken token = new UsernamePasswordToken("jiuyue","12345");
18 subject.login(token);
19 System.out.println("isAuthenticate:"+subject.isAuthenticated());
20 System.out.println("user:");
21 subject.checkRoles("admin");
22 subject.checkPermission("user:delete");
23 subject.checkPermissions("user:delete","user:update");
24
25 }
26}
代码分析:
首先通过new DefaultSecurityManager()构建SecurityManager环境,将IniRealm设置到环境中
1( defaultSecurityManager.setRealm(iniRealm))
接着获取 SecurityManager 并绑定到 SecurityUtils。
通过 SecurityUtils 得到 Subject,其会自动绑定到当前线程;如果在 web 环境在请求结束时需要解除绑定。然后获取身份验证的 Token,如用户名,密码。
调用 subject.login 方法进行登录,其会自动委托给 SecurityManager.login 方法进行登录。
专题链接:
Shiro安全框架第一篇| 什么是Apache Shiro?
“扫码关注“