菜鸟学习shiro之用配置文件实现登录,身份和权限验证2

简介: Maven的和第一篇,一样直接去复制使用这篇博客和上一篇没有多大的区别,区别之处就是上一篇没有实现权限认证,将在这一篇中实现,这里我们使用四郎给我们提供的内置类IniRealm,来实现登录,身份和权限验证,值得注意的是...

Maven的和第一篇,一样直接去复制使用

这篇博客和上一篇没有多大的区别,区别之处就是上一篇没有实现权限认证,将在这一篇中实现,这里我们使用四郎给我们提供的内置类IniRealm,来实现登录,身份和权限验证,值得注意的是,IniRealm这个是引入的配置文件的形式来管理数据库中的数据的

直接上代码吧:

import antlr.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.realm.text.IniRealm;
import org.apache.shiro.subject.Subject;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class IniRealmTest {


    @Test
    public void testAuthenticationTest() {

        // 这个是内置的realm类
        IniRealm iniRealm = new IniRealm("classpath:user.ini");


        // 1.构建SecurityManager环境
        DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
        defaultSecurityManager.setRealm(iniRealm);

        // 2.主体提交认证请求
        SecurityUtils.setSecurityManager(defaultSecurityManager);
        Subject subject = SecurityUtils.getSubject();

        // 这个是需要认证的信息
        UsernamePasswordToken token = new UsernamePasswordToken("Mark","123456");
        subject.login(token);

        System.out.println("isAuthenticated="+subject.isAuthenticated());

        //subject.logout();

        System.out.println("isAuthenticated="+subject.isAuthenticated());

        subject.checkRole("admin");
        subject.checkPermissions("user:delete","user:update");
    }

}
user.ini的配置文件如下
[users]
Mark=123456,admin
[roles]
admin=user:delete,user:update

其实总体思路上还是:

1.构建安全管理器的环境,然后

2.就类比如一个服务器端,境界为数据库中的用户的信息,把域数据库的用户信息加载到安全管理器环境中去

3.统一把信息部署到主题实现容器或者封装对象的实现类(主题是安全管理器的实现类)中,

4.客户端把要验证的信息在主题容器中进行比对,这时所有的结果都在学科的方法中查看。

 

 

相关文章
|
4月前
|
前端开发 Java 数据库
基于RBAC的权限模型+shiro+springboot实现的系统登陆权限认证模块
基于RBAC的权限模型+shiro+springboot实现的系统登陆权限认证模块
44 0
|
8月前
|
存储 缓存
若依项目如何实现一个账户只能一个人登录(汇总)
若依项目如何实现一个账户只能一个人登录(汇总)
600 0
|
9月前
|
API 数据安全/隐私保护
漏刻有时忘记超级管理员密码的解决方案:通过API接口设置超级管理员
漏刻有时忘记超级管理员密码的解决方案:通过API接口设置超级管理员
46 0
|
12月前
|
存储 SQL JSON
用户登录设计及免密登录的通用思路
完整的用户登录设计及免密登录的通用思路。涉及到了SQL表单创建、Mapper接口、Service接口、Controller接口。其中还讲述了如何统一的响应体,保持前后端友好开发;以及持久化token。
450 0
|
安全
《安全机制与User账户身份验证实战》电子版地址
安全机制与User账户身份验证实战
43 0
《安全机制与User账户身份验证实战》电子版地址
|
Java 数据安全/隐私保护 容器
【JavaWeb】案例:用户登录、用户自动登录
本期主要介绍案例:用户登录、用户自动登录
222 0
【JavaWeb】案例:用户登录、用户自动登录
|
存储 JSON 安全
实际项目教学:身份/权限验证
实际项目教学:身份/权限验证
170 0
实际项目教学:身份/权限验证
|
缓存 安全 数据库
shiro登录认证过程
shiro登录认证过程
shiro登录认证过程
|
缓存 安全 JavaScript
极简权限认证必须掌握【代码+原理+建议收藏】
这个极简权限认证必须掌握,代码不过百,但是很关键
198 0
极简权限认证必须掌握【代码+原理+建议收藏】