当前位置: 首页 > 知识库问答 >
问题:

springboot shiro 配置不生效的问题?

伍玮
2023-07-04

刚开始学习shiro, 实现的效果非常简单,首页点击添加(/user/add),应该能直接访问. 而点击更新(/user/update),应该提示登录.但是实际都可以直接点开,不知道哪里出问题了,shiro的配置没生效,请高手赐教,谢谢
环境:java 17 springboot 3.1.1 shiro 1.11.0

pom.xml

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-spring-boot-starter</artifactId>
            <version>1.11.0</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>

controller/MyController.java

@Controller
public class MyController {
    @RequestMapping("/")
    public String index() {
        return "index";
    }

    @GetMapping("/user/add")
    public String add(Model model) {
        return "user/add";
    }

    @GetMapping("/user/update")
    public String update(Model  model) {
        return "user/update";
    }
}

resources/templates/index.html

<html>
<body>
    <h1>首页</h1>
    <a href="user/add">添加</a>
    <a href="user/update">更新</a>
</body>
</html>

config/UserRealm.java

public class UserRealm extends AuthorizingRealm {
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
        return null;
    }

    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
        return null;
    }
}

config/ShiroConfiguration.java

@Configuration
public class ShiroConfiguration {

    // 1. 配置shiroFilterFactoryBean
    @Bean(name = "shiroFilterFactoryBean")
    public ShiroFilterFactoryBean shiroFilterFactoryBean(DefaultWebSecurityManager defaultWebSecurityManager) {
        ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();

        // 设置安全管理器
        bean.setSecurityManager(defaultWebSecurityManager);
        bean.setLoginUrl("/login");
        bean.setUnauthorizedUrl("/unauthorized");
        // 添加shiro的内置过滤器
        Map<String, String> filterMap = new LinkedHashMap<>();
        filterMap.put("/user/add","anon");
        filterMap.put("/user/update","authc");
        bean.setFilterChainDefinitionMap(filterMap);
        return bean;
    }
    //   2. 配置DefaultWebSecurityManager
    @Bean(name = "defaultWebSecurityManager")
    public DefaultWebSecurityManager defaultWebSecurityManager() {
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        securityManager.setRealm(userRealm());

        return securityManager;
    }

    //   3. 配置Realm
    @Bean(name = "userRealm")
    public UserRealm userRealm() {
        return new UserRealm();
    }
}

共有1个答案

单耘豪
2023-07-04

shiro-spring-boot-web-starter 注意坐标

 类似资料:
  • 本文向大家介绍一次Linux修改MySQL配置不生效的问题解决,包括了一次Linux修改MySQL配置不生效的问题解决的使用技巧和注意事项,需要的朋友参考一下 背景 自己手上有一个项目服务用的是AWS EC2,最近从安全性和性能方面考虑,最近打算把腾讯云的MySQL数据库迁移到AWS RDS上,因为AWS的出口规则和安全组等问题,我需要修改默认的3306端口和Bind Address限制特定的IP

  • 需要对某个域名下的所有请求速率进行限制,如下配置,设置每个独立的ip每秒只能请求一次,通过geo和map的方式设置白名单,白名单内的ip地址将不做限制,如下配置完成使用jmeter压测发现限制生效了白名单不生效(确认客户端ip没配置错),白名单不生效的原因是什么?

  • 如图所示,好像也没写错呀,然后package.json里是这样写的 在这里先谢谢给位大哥大姐们的回答,小弟感激不尽

  • 配置文件如上,相同的commit message信息,我在本地使用Git提交时,不会触发publish阶段的任务。而在gitlab网页上使用在线IDE进行编辑时,却能正常触发publish阶段,这是什么原因?

  • 本文向大家介绍怎么解决vue动态设置img的src不生效的问题?相关面试题,主要包含被问及怎么解决vue动态设置img的src不生效的问题?时的应答技巧和注意事项,需要的朋友参考一下 这个 不明确,这个应该属于打包工具范畴,和 Vue 没多大关系。可以用一个很简单的例子证明,直接用 script 的形式引入vue,然后更改src的值看能不能访问,麻烦你们弄清楚其中的原理再来解决问题 为什么不把自己

  • 关于跨域配置的问题 如图,我需要调用以下请求访问资源 vue.config.js的配置如下(主要是proxy的配置 可能是哪里配错了,但我看不出问题,希望有人能指出 ps:之前看到有帖子说vue2该配置项名为proxyTable,还有devServer应为dev,这两个我都试过了,前者提示没有该配置项 后者为vue.config.js的提示: