Java全栈开发---Java ERP系统开发:商业ERP(十五)ERP系统的权限验证框架Shiro

在这里插入图片描述

2、认证

(1)需求分析

判断当前用户是否登录,如果没有登录侧跳转到登录页面

(2)认证现实(重点)
1)Subject的login方法

修改LoginAction的checkUser方法

步骤:

创建令牌:UsernamePasswordToken

获取subject

执行subject.login()方法

在这里插入图片描述

public void checkUser() {

// 在登录的时候可能会发送异常

try {

/*

  • // 查询是否存在 Emp loginUser = empBiz.findByUsernameAndPwd(username, pwd);

  • System.out.println(loginUser+“emp”); if (loginUser != null) { // 记录当前登录的用户

  • ActionContext.getContext().getSession().put(“loginUser”, loginUser);//

  • 先把用户的信息放到session当中 ajaxReturn(true, “用户名或密码正确”); } else { ajaxReturn(false,

  • “用户名或密码不正确”); }

*/

// 1、创建令牌(通行证)身份认证,身份证明

UsernamePasswordToken upt = new UsernamePasswordToken(username, pwd);

// 2、获取主机subject:封装当前用户的操作

Subject subject = SecurityUtils.getSubject();

// 3、指向login

subject.login(upt);

ajaxReturn(true, “用户名或密码正确”);

} catch (Exception e) {

e.printStackTrace();

ajaxReturn(false, “登录失败”);

}

}

3、自定义Realm

我们改用subject.login方法后,并不会调用登陆的业务层进行登陆的验证查询,即不会从数据库查找登陆的用户名和密码是否正确,而是将这项工作交给 shiro去完成。

那 shiro,是怎么知道登陆的用户名和密码是否正确的呢?其实它也需要用到我的登陆验证业务,这时它就得向“别人”打听一下,那就是Realm了。

真正实现登陆验证的是Realm,而shiro只是去调Realm

Realm: Realm 充当了 Shiro与应用安全数据间的“桥梁"或者"连接器"。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的 Realm中查找用户及其权限信息。

从这个意义上讲,Realm实质上是一个安全相关的DAO:它封装了数据源的逐接细节,并在需要时将相关数据提供给 Shiro。当配置 Shiro,时,你必须至少指定一个 Realm,用于认证和或授权。

配置多个Realm 是可以的,但是至少需要一个。

1) 在erp_web子工程下创建包 com.itzheng.erp.realm:

在这里插入图片描述

2)创建ErpRealm类继承自AuthorizingRealm

在这里插入图片描述

<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值