• Shiro中@RequiresAuthentication等等注解介绍


    使用前请先开启Shiro的controller层注解,如果已经设置请下滑绕过

    要在spring-mvc.xml中写。

        <!--下面的用于开启shiro的权限注解-->
        <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"
              depends-on="lifecycleBeanPostProcessor">
            <property name="proxyTargetClass" value="true"/>
        </bean>
        <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
            <property name="securityManager" ref="securityManager"/>
        </bean>

    如果在是springboot中

    /**
     * 下面2个支持controller层注解实现权限控制
     *
     * @return
     */
        @Bean(name = "advisorAutoProxyCreator")
        public DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator() {
            DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
            advisorAutoProxyCreator.setProxyTargetClass(true);
            return advisorAutoProxyCreator;
        }
    
        @Bean(name = "authorizationAttributeSourceAdvisor")
        public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(@Qualifier("securityManager") SecurityManager securityManager) {
            AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
            authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
            return authorizationAttributeSourceAdvisor;
        }

    ———————————————————进入正题———————————————————————

    @RequiresAuthentication

      验证用户是否登录,等同于方法subject.isAuthenticated() 结果为true时。

    @RequiresUser

      验证用户是否被记忆,user有两种含义:

      一种是成功登录的(subject.isAuthenticated() 结果为true);

      另外一种是被记忆的(subject.isRemembered()结果为true)。

    @RequiresGuest

      验证是否是一个guest的请求,与@RequiresUser完全相反。

       换言之,RequiresUser  == !RequiresGuest。

      此时subject.getPrincipal() 结果为null.

    @RequiresRoles

      例如:@RequiresRoles("aRoleName");

       void someMethod();

      如果subject中有aRoleName角色才可以访问方法someMethod。如果没有这个权限则会抛出异常AuthorizationException。

    @RequiresPermissions

      例如: @RequiresPermissions({"file:read", "write:aFile.txt"} )
       void someMethod();

      要求subject中必须同时含有file:read和write:aFile.txt的权限才能执行方法someMethod()。否则抛出异常AuthorizationException。
    ---------------------
    原文:https://blog.csdn.net/anmoyyh/article/details/74742772

  • 相关阅读:
    dedecms自定义表单提交获取时间跟ip地址
    JQuery购物车多物品数量的加减+总价计算
    jquery手机触屏滑动拼音字母城市选择器代码
    js实现图片上传实时显示
    js实现发送验证码倒计时效果
    JS 仿支付宝input文本输入框放大组件
    js实现倒计时效果
    jquery统计输入文字的个数并对其进行判断
    【Linux】Linux系统安全设置
    java泛型(generics)
  • 原文地址:https://www.cnblogs.com/hunmeng/p/11032014.html
Copyright © 2020-2023  润新知