ZBLOG

两个微服务,共用同一个shiro模块,服务A菜单的shiro的runAs主体正常替换后,从服务A跳转到服务B的菜单时,还是使用的服务A没替换时的runAs主体。为什么,请提供完整的可运行的示例代码,后台使用springboot

下面是一个简单的示例代码,展示如何使用Shiro进行身份认证和权限控制。

服务A:

// ServiceAController.java

@RestController
@RequestMapping("/serviceA")
public class ServiceAController {

    @GetMapping("/menu")
    public String getMenu() {
        // 获取当前用户信息
        Subject currentUser = SecurityUtils.getSubject();
        String username = (String) currentUser.getPrincipal();

        // 根据用户信息获取菜单
        // 这里省略具体的业务逻辑,直接返回一个示例菜单字符串
        return "Service A Menu for " + username;
    }

}

服务B:

// ServiceBController.java

@RestController
@RequestMapping("/serviceB")
public class ServiceBController {

    @GetMapping("/menu")
    public String getMenu() {
        // 获取当前用户信息
        Subject currentUser = SecurityUtils.getSubject();
        String username = (String) currentUser.getPrincipal();

        // 根据用户信息获取菜单
        // 这里省略具体的业务逻辑,直接返回一个示例菜单字符串
        return "Service B Menu for " + username;
    }

}

配置文件:

# application.yml

server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Shanghai  
    username: root  
    password: your_password  

shiro:
  loginUrl: /login  
  successUrl: /index  

# 配置自定义的Realm
shiro.securityManager.realms: customRealm  

# 自定义的Realm,继承AuthorizingRealm类,实现相应的认证和授权方法
customRealm:  
  name: customRealm 

这只是一个简单的示例,具体根据你的实际业务逻辑进行修改和完善。关于Shiro的更详细配置和使用,请参考Shiro官方文档。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=7920

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?