精华内容
下载资源
问答
  • shiro注解

    2019-02-12 15:26:48
    * @描述:开启Shiro的注解(如@RequiresRoles,@RequiresPermissions),需借助SpringAOP扫描使用Shiro注解的类,并在必要时进行安全逻辑验证 * 配置以下两个bean(DefaultAdvisorAutoProxyCreator和...

    1.要使用先开启Aop

    /**
    	 *
    	 * @描述:开启Shiro的注解(如@RequiresRoles,@RequiresPermissions),需借助SpringAOP扫描使用Shiro注解的类,并在必要时进行安全逻辑验证
    	 * 配置以下两个bean(DefaultAdvisorAutoProxyCreator和AuthorizationAttributeSourceAdvisor)即可实现此功能
    	 * </br>Enable Shiro Annotations for Spring-configured beans. Only run after the lifecycleBeanProcessor(保证实现了Shiro内部lifecycle函数的bean执行) has run
    	 * </br>不使用注解的话,可以注释掉这两个配置
    	 * @创建人:wyait
    	 * @创建时间:2018年5月21日 下午6:07:56
    	 * @return
    	 */
    	@Bean
    	public DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator() {
    		DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
    		advisorAutoProxyCreator.setProxyTargetClass(true);
    		return advisorAutoProxyCreator;
    	}
     @RequiresAuthentication
      表示当前Subject已经通过login 进行了身份验证;即Subject.isAuthenticated()返回true。
    
      @RequiresUser
      表示当前Subject已经身份验证或者通过记住我登录的。
    
      @RequiresGuest
      表示当前Subject没有身份验证或通过记住我登录过,即是游客身份。
    
      @RequiresRoles(value={“admin”, “user”}, logical= Logical.AND)
      @RequiresRoles(value={“admin”})
      @RequiresRoles({“admin“})
      表示当前Subject需要角色admin 和user。
    
      @RequiresPermissions (value={“user:a”, “user:b”}, logical= Logical.OR)
      表示当前Subject需要权限user:a或user:b。

    Shiro的认证注解处理是有内定的处理顺序的,如果有多个注解的话,前面的通过了会继续检查后面的,若不通过则直接返回,处理顺序依次为(与实际声明顺序无关):

    RequiresRoles
    RequiresPermissions
    RequiresAuthentication
    RequiresUser
    RequiresGuest

    以上注解既可以用在controller中,也可以用在service中使用;
    建议将shiro注解放在controller中,因为如果service层使用了spring的事物注解,那么shiro注解将无效。

     

    展开全文
  • shiro 注解

    2016-07-26 21:13:59
    整理了一下shiro中的注解,主要包括如下一些注解: 1.@RequiresAuthentication ...在使用shiro注解与springmvc进行整合时,注解只能加到controller的方法上,标明此方法需要什么样的权限才能访问,使用这...

    整理了一下shiro中的注解,主要包括如下一些注解:

    1.@RequiresAuthentication

    2.@RequiresGuest

    3.@RequiresPermissions

    4.@RequiresRoles

    5.@RequiresUser

    在使用shiro注解与springmvc进行整合时,注解只能加到controller的方法上,标明此方法需要什么样的权限才能访问,使用这些注解后,如果没有此权限时访问方法会抛出

    不同类型的异常,例如@RequiresUser抛出AuthorizationException异常,@RequiresPermissions抛出UnauthorizedException异常,在web整合时,可以在springmvc的全局异常中进行捕获,这样就可以跳转到异常页面。

    其实注解就是调用了subject中各种权限校验方法,如果没有校验通过就会抛出异常

    展开全文
  • Shiro注解

    2020-02-01 15:54:28
    org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor " > < property name = " securityManager " ref = " securityManager " /> bean > 第三步:测试 @...

    @RequiresRoles和@RequiresPermissions

    第一步:引入依赖

    <dependency>
           <groupId>org.aspectj</groupId>
           <artifactId>aspectjweaver</artifactId>
    </dependency>
    

    第二步:SpringMVC开启aop,加入授权生效的对象

    <aop:config proxy-target-class="true" />
        <bean class="org.apache.shiro.spring.LifecycleBeanPostProcessor" />
        <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor" >
            <property name="securityManager" ref="securityManager" />
        </bean>
    

    第三步:测试

    	@RequiresRoles("admin")
        @RequestMapping(path="/test", method = RequestMethod.GET)
        @ResponseBody
        public String test(){
            return "test success...";
        }
    
        @RequiresRoles("admin1")
        @RequestMapping(path="/test2", method = RequestMethod.GET)
        @ResponseBody
        public String test1(){
            return "test2 success...";
        }
    
    	@RequiresPermissions(value = {"user:select"})
        @RequestMapping(path="/test3", method = RequestMethod.GET)
        @ResponseBody
        public String test1(){
            return "test3 success...";
        }
    
    展开全文
  • shiro授权及shiro注解式开发目标1.授权2.注解式开发 目标 1、shiro授权角色、权限 2、Shiro的注解式开发 1.授权 在ShiroUserMapper.xml中新增内容 <select id="getRolesByUserId" resultType="java.lang.String" ...

    转载请标明出处:https://blog.csdn.net/men_ma/article/details/106847165.
    本文出自 不怕报错 就怕不报错的小猿猿 的博客

    shiro授权及shiro注解式开发

    目标

    1、shiro授权角色、权限
    2、Shiro的注解式开发

    目录

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    1.授权

    在ShiroUserMapper.xml中新增内容

     <select id="getRolesByUserId" resultType="java.lang.String" parameterType="java.lang.Integer">
      select r.roleid from t_shiro_user u,t_shiro_user_role ur,t_shiro_role r
        where u.userid = ur.userid and ur.roleid = r.roleid
        and u.userid = #{userid}
    </select>
      <select id="getPersByUserId" resultType="java.lang.String" parameterType="java.lang.Integer">
      select p.permission from t_shiro_user u,t_shiro_user_role ur,t_shiro_role_permission rp,t_shiro_permission p
      where u.userid = ur.userid and ur.roleid = rp.roleid and rp.perid = p.perid
      and u.userid = #{userid}
    </select>
    

    在这里插入图片描述

    Service层

    package com.xiaoqing.ssm.service;
    
    import com.xiaoqing.ssm.model.ShiroUser;
    import org.apache.ibatis.annotations.Param;
    
    import java.util.Set;
    
    /**
     * @author 晴sister
     * @site https://blog.csdn.net/men_ma
     * @company
     * @create 2020-10-2819:11
     */
    public interface ShiroUserService {
    
        public Set<String> getRolesByUserId(Integer userId);
    
        public Set<String> getPersByUserId(Integer userId);
    
    
        ShiroUser queryByName(String uname);
    
    }
    
    

    在这里插入图片描述




    package com.xiaoqing.ssm.service.impl;
    
    import com.xiaoqing.ssm.mapper.ShiroRoleMapper;
    import com.xiaoqing.ssm.mapper.ShiroUserMapper;
    import com.xiaoqing.ssm.model.ShiroUser;
    import com.xiaoqing.ssm.service.ShiroUserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.Set;
    
    /**
     * @author 晴sister
     * @site https://blog.csdn.net/men_ma
     * @company
     * @create 2020-10-2819:55
     *
     * @Service("shiroUserService")类似于取一个ID名字,在application-shiro中使用到
     */
    @Service("shiroUserService")
    public class ShiroUserServiceImpl implements ShiroUserService {
        @Autowired
        private ShiroUserMapper shiroUserMapper;
    
        @Override
        public Set<String> getRolesByUserId(Integer userId) {
            return shiroUserMapper.getRolesByUserId(userId);
        }
    
        @Override
        public Set<String> getPersByUserId(Integer userId) {
            return shiroUserMapper.getPersByUserId(userId);
        }
    
        @Override
        public ShiroUser queryByName(String uname) {
            return shiroUserMapper.queryByName(uname);
        }
    }
    
    

    在这里插入图片描述

    重写自定义realm中的授权方法

    @Override
        protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
            System.out.println("用户授权...");
            String username = principals.getPrimaryPrincipal().toString();
            ShiroUser user = shiroUserService.queryByName(username);
            Set<String> roles = shiroUserService.getRolesByUserId(user.getUserid());
            Set<String> pers = shiroUserService.getPersByUserId(user.getUserid());
    
    //        SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
    //        info.addRoles(roles);
    //        info.addStringPermissions(pers);
    
            SimpleAuthorizationInfo info=new SimpleAuthorizationInfo();
            info.setRoles(roles);
            info.setStringPermissions(pers);
    
            return info;
        }
    

    在这里插入图片描述

    2.注解式开发

    常用注解介绍

    @RequiresAuthenthentication:表示当前Subject已经通过login进行身份验证;即 Subject.isAuthenticated()返回 true
    @RequiresUser:表示当前Subject已经身份验证或者通过记住我登录的
    @RequiresGuest:表示当前Subject没有身份验证或者通过记住我登录过,即是游客身份
    @RequiresRoles(value = {“admin”,“user”},logical = Logical.AND):表示当前Subject需要角色admin和user
    @RequiresPermissions(value = {“user:delete”,“user:b”},logical = Logical.OR):表示当前Subject需要权限user:delete或者user:b

    注解的使用

    Controller层

    
        @RequiresUser
        @ResponseBody
        @RequestMapping("/passUser")
        public String passUser(HttpServletRequest req){
            return "pass user....";
        }
    
        @RequiresRoles(value ={"2","4"},logical = Logical.OR)
        @ResponseBody
        @RequestMapping("/passRole")
        public String passRole(HttpServletRequest req){
            return "pass role....";
        }
    
        @RequiresPermissions(value = {"user:load","user:export"},logical = Logical.AND)
        @ResponseBody
        @RequestMapping("/passAuth")
        public String passAuth(HttpServletRequest req){
            return "pass auth....";
        }
    

    在这里插入图片描述

    springmvc-servlet.xml

    <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"
          depends-on="lifecycleBeanPostProcessor">
        <property name="proxyTargetClass" value="true"></property>
    </bean>
    <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
        <property name="securityManager" ref="securityManager"/>
    </bean>
    
    <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="exceptionMappings">
            <props>
                <prop key="org.apache.shiro.authz.UnauthorizedException">
                    unauthorized
                </prop>
            </props>
        </property>
        <property name="defaultErrorView" value="unauthorized"/>
    </bean>
    

    在这里插入图片描述

    Jsp测试代码

    <ul>
        shiro注解
        <li>
            <a href="${pageContext.request.contextPath}/passUser">用户认证</a>
        </li>
        <li>
            <a href="${pageContext.request.contextPath}/passRole">角色</a>
        </li>
        <li>
            <a href="${pageContext.request.contextPath}/passPer">权限认证</a>
        </li>
    </ul>
    

    3.测试结果

    预测结果
    zs只能查看身份认证的按钮内容
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    ls、ww可以看权限认证按钮内容
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    zdm可以看所有按钮的内容

    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • spring开启shiro注解

    2021-02-26 09:35:06
    SpringBoot中使shiro注解生效 shiro注解比如 @RequiresAuthentication 验证用户是否登录,等同于方法subject.isAuthenticated() @RequiresUser 验证用户是否被记忆,user有两种含义: 一种是成功登录的(subject....
  • 自定义Shiro注解

    2018-04-23 05:42:13
    自定义Shiro注解 顺序 创建自定义的注解 资源管理器,继承AuthorizationAttributeSourceAdvisor,添加新注解支持 AOP拦截器,继承AopAllianceAnnotationsAuthorizingMethodInterceptor 方法拦截器,继承...
  • shiro 注解
  • shiro注解权限控制-5个权限注解 Shiro共有5个注解,接下来我们就详细说说吧 1.@RequiresAuthentication: 使用该注解标注的类,实例,方法在访问或调用时,当前Subject必须通过login 进行了身份验证;即 Subject....
  • shiro注解权限控制-5个权限注解

    万次阅读 多人点赞 2017-06-12 15:45:46
    shiro注解权限控制-5个权限注解Shiro共有5个注解,接下来我们就详细说说吧 RequiresAuthentication: 使用该注解标注的类,实例,方法在访问或调用时,当前Subject必须在当前session中已经过认证。RequiresGuest: ...
  • shiro注解的使用

    千次阅读 2018-07-16 23:56:16
    使用spring+springmvc+mybatis+shiro开发权限管理的demo 1.表的创建 permission:权限表 role:角色表 user:用户表 ...role_permission:角色权限表 ...用户ID 角色ID 角色名称 ...2.shiro注解的使用 注解要声明在...
  • Shiro与springmvc整合,mysql数据库,包含脚本,shiro注解配置以及shiro标签
  • shiro注解权限控制-5个权限注解 Shiro共有5个注解,接下来我们就详细说说吧 RequiresAuthentication: 使用该注解标注的类,实例,方法在访问或调用时,当前Subject必须在当前session中已经过认证。 RequiresG....
  • Shiro官方文档示例中只分了两个配置文件:web.xml和applicationContext.xml,如果按照官方文档配置,注解是可以正常使用的,因此Shiro注解无效的原因是把SpringMVC和Shiro的xml文件进行了分开配置,如下: ...
  • Shiro 注解的使用

    万次阅读 2014-04-03 20:04:21
    今天研究了下shiro注解的使用,碰到了一些问题,
  • shiro注解@RequiresPermissions失效问题 问题原因 我遇到的失效原因是,我将使用@RequiresPermissions进行权限校验的Controller在其他层进行了@Autowired。 上面的位置之所以失效,是因为我将当前controller在其它...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,866
精华内容 746
关键字:

shiro注解