2024年Java最全Spring Boot 整合 Shiro ,两种方式全总结!(1),今年最新整理的《高频Java面试题集合》

最后

笔者已经把面试题和答案整理成了面试专题文档

image

image

image

image

image

image

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

org.apache.shiro

shiro-spring

1.4.0

  • 创建 Realm

接下来我们来自定义核心组件 Realm:

public class MyRealm extends AuthorizingRealm {

@Override

protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {

return null;

}

@Override

protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {

String username = (String) token.getPrincipal();

if (!“javaboy”.equals(username)) {

throw new UnknownAccountException(“账户不存在!”);

}

return new SimpleAuthenticationInfo(username, “123”, getName());

}

}

在 Realm 中实现简单的认证操作即可,不做授权,授权的具体写法和 SSM 中的 Shiro 一样,不赘述。这里的认证表示用户名必须是 javaboy ,用户密码必须是 123 ,满足这样的条件,就能登录成功!

  • 配置 Shiro

接下来进行 Shiro 的配置:

@Configuration

public class ShiroConfig {

@Bean

MyRealm myRealm() {

return new MyRealm();

}

@Bean

SecurityManager securityManager() {

DefaultWebSecurityManager manager = new DefaultWebSecurityManager();

manager.setRealm(myRealm());

return manager;

}

@Bean

ShiroFilterFactoryBean shiroFilterFactoryBean() {

ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();

bean.setSecurityManager(securityManager());

bean.setLoginUrl(“/login”);

bean.setSuccessUrl(“/index”);

bean.setUnauthorizedUrl(“/unauthorizedurl”);

Map<String, String> map = new LinkedHashMap<>();

map.put(“/doLogin”, “anon”);

map.put(“/**”, “authc”);

bean.setFilterChainDefinitionMap(map);

return bean;

}

}

在这里进行 Shiro 的配置主要配置 3 个 Bean :

  1. 首先需要提供一个 Realm 的实例。

  2. 需要配置一个 SecurityManager,在 SecurityManager 中配置 Realm。

  3. 配置一个 ShiroFilterFactoryBean ,在 ShiroFilterFactoryBean 中指定路径拦截规则等。

  4. 配置登录和测试接口。

其中,ShiroFilterFactoryBean 的配置稍微多一些,配置含义如下:

  • setSecurityManager 表示指定 SecurityManager。

  • setLoginUrl 表示指定登录页面。

  • setSuccessUrl 表示指定登录成功页面。

  • 接下来的 Map 中配置了路径拦截规则,注意,要有序。

这些东西都配置完成后,接下来配置登录 Controller:

@RestController

public class LoginController {

@PostMapping(“/doLogin”)

public void doLogin(String username, String password) {

Subject subject = SecurityUtils.getSubject();

try {

subject.login(new UsernamePasswordToken(username, password));

System.out.println(“登录成功!”);

} catch (AuthenticationException e) {

e.printStackTrace();

System.out.println(“登录失败!”);

}

}

@GetMapping(“/hello”)

public String hello() {

return “hello”;

}

@GetMapping(“/login”)

public String login() {

return “please login!”;

}

}

测试时,首先访问 /hello 接口,由于未登录,所以会自动跳转到 /login 接口:

然后调用 /doLogin 接口完成登录:

再次访问 /hello 接口,就可以成功访问了:

使用 Shiro Starter

===========================================================================

上面这种配置方式实际上相当于把 SSM 中的 XML 配置拿到 Spring Boot 中用 Java 代码重新写了一遍,除了这种方式之外,我们也可以直接使用 Shiro 官方提供的 Starter 。

  • 创建工程,和上面的一样

创建成功后,添加 shiro-spring-boot-web-starter ,这个依赖可以代替之前的 shiro-webshiro-spring 两个依赖,pom.xml 文件如下:

org.springframework.boot

spring-boot-starter-web

org.apache.shiro

shiro-spring-boot-web-starter

1.4.0

  • 创建 Realm

这里的 Realm 和前面的一样,我就不再赘述。

  • 配置 Shiro 基本信息

最后

如果觉得本文对你有帮助的话,不妨给我点个赞,关注一下吧!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 配置 Shiro 基本信息

最后

如果觉得本文对你有帮助的话,不妨给我点个赞,关注一下吧!

[外链图片转存中…(img-5Mq0PtuS-1714870033990)]

[外链图片转存中…(img-GfbbPfcY-1714870033990)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 27
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值