springboot使用shiro框架实现在controller层加注解来权限控制

弟子,我如来佛祖对于编程不是很懂,但是我可以告诉你一些基本知识。

在使用Shiro框架进行权限控制时,需要进行如下操作:

1. 引入Shiro和Spring Boot的依赖:

```
<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-core</artifactId>
    <version>1.7.1</version>
</dependency>

<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-spring</artifactId>
    <version>1.7.1</version>
</dependency>
```

2. 配置Shiro的安全管理器和其他必要的组件,比如Realm、CacheManager等。在Spring Boot中,可以使用Java Config的方式配置:

```
@Configuration
public class ShiroConfig {

    @Bean
    public DefaultWebSecurityManager securityManager() {
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        securityManager.setRealm(myRealm());
        securityManager.setCacheManager(cacheManager());
        return securityManager;
    }

    @Bean
    public CacheManager cacheManager() {
        return new MemoryConstrainedCacheManager();
    }

    @Bean
    public MyRealm myRealm() {
        return new MyRealm();
    }
}
```

3. 编写自定义的Realm,用于获取用户的身份认证和授权信息:

```
public class MyRealm extends AuthorizingRealm {
    // 实现用户认证逻辑

    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
        // 获取用户输入的账号密码
        UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken;
        String username = token.getUsername();
        String password = new String(token.getPassword());

        // 模拟数据库中的账号密码
        if (!"admin".equals(username)) {
            throw new UnknownAccountException("用户不存在");
        }
        if (!"123456".equals(password)) {
            throw new IncorrectCredentialsException("密码错误");
        }

        return new SimpleAuthenticationInfo(username, password, getName());
    }

    // 实现用户授权逻辑

    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
        // 获取用户身份信息
        String username = (String) principalCollection.getPrimaryPrincipal();

        // 从数据库或其他数据源中获取用户的角色和权限信息,并添加到AuthorizationInfo中
        SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
        List<String> roles = new ArrayList<>();
        roles.add("admin");
        authorizationInfo.addRoles(roles);
        List<String> permissions = new ArrayList<>();
        permissions.add("user:list");
        permissions.add("user:add");
        permissions.add("user:delete");
        authorizationInfo.addStringPermissions(permissions);

        return authorizationInfo;
    }
}
```

4. 在Controller层的方法中添加Shiro的注解,来实现权限控制:

```
@RestController
@RequestMapping("/user")
@RequiresPermissions("user")
public class UserController {

    @GetMapping("/list")
    @RequiresPermissions("user:list")
    public String list() {
        return "用户列表";
    }

    @PostMapping("/add")
    @RequiresPermissions("user:add")
    public String add() {
        return "添加用户";
    }

    @PostMapping("/delete")
    @RequiresPermissions("user:delete")
    public String delete() {
        return "删除用户";
    }
}
```

以上就是使用Shiro框架在Spring Boot中进行权限控制的基本操作,希望能够对你有所帮助。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值