栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

shiro权限注解和会话管理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

shiro权限注解和会话管理

1.shiro权限注解

注解可以放在controller对应的方法上,也可以放在service层对应的方法上。

@RequiresAuthentication:表示当前Subject已经通过login进行了身份验证;即Subject.isAuthenticated()返回true。

@RequiresUser:表示当前Subject已经身份验证或者通过记住我登录的。

@RequiresGuest:表示当前Subject没有身份验证或通过记住我登录过,即是游客身份。

@RequiresRoles(value={“admin”,“user”},logical=Logical.AND):表示当前Subject需要角色admin和user。

@RequiresPermissions(value={“user:a”,“user:b”},logical=Logical.OR):表示当前Subject需要权限user:a或user:b。

1.1简单实验

(1)编写ShiroService.java

@Service
public class ShiroService {
    @RequiresRoles({"admin"})
    public void testMethod(){
        System.out.println("testMethod, time: " + new Date());

        Session session = SecurityUtils.getSubject().getSession();
        Object val = session.getAttribute("key");

        System.out.println("Service SessionVal: " + val);
    }
}

(2)编写controller

@Autowired
    private ShiroService shiroService;

    @RequestMapping("/testShiroAnnotation")
    public String testShiroAnnotation(HttpSession session){
        session.setAttribute("key", "value12345");
        shiroService.testMethod();
        return "redirect:/list.jsp";
    }

(3)为方便起见,在list.jsp中测试。



Test ShiroAnnotation

测试结果:

当我们使用admin登录时,我们可以点击测试。当我们使用user登录时,会报错误。

 1.2注意事项

(1)可能会出现shiro注解失效的问题,解决方法就是在springmvc的配置文件中加上如下配置:

 
        
    

    
        
    

(2)在实际开发的时候,我们往往在service上面加上支持事务的注解,这个时候service已经是一个代理对象了。如果我们还在这里添加shiro的注解就不好用了,故在这种情况下应该加在controller上,否则会出现异常。

2.shiro会话管理

Shiro提供了完整的企业级会话管理功能,不依赖于底层容器(如web容器tomcat),不管JavaSE还是JavaEE环境都可以使用,提供了会话管理、会话事件监听、会话存储/持久化、容器无关的集群、失效/过期支持、对Web的透明支持、SSO单点登录的支持等特性。

在1.1实验中,已经含有session的简单实验(下图为控制台的打印)。这里我们在controller中使用的是http session,而在service中使用shiro session获取,这给我们提供了一个思路,我们在service中可以获得controller中的数据,这也是shiro session的一个重要的应用场景。

 参考:尚硅谷

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/356794.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号