Java web 登录 使用shiro和基于session的方式有何不同?

以前做小网站把用户对象set 到session中来标识登录状态;最近学shiro 发现他的登录方式好像不太一样。请问具体区别是什么?两者的优缺点有哪些?

shiro自己实现了sessionDAO换言之就是他自己也存储了session,所以原理是一样的。
shiro的主要作用还是权限的控制方面,标识登陆状态这个只是其中很小的一部分。
shiro的优点,个人认为他的优点在于
1、作为安全验证框架,使用起来比spring-security方便
2、提供web支持,可以在jsp中通过shiro标签方便的做到细粒度的权限管控
3、可以直接使用annotation对所使用的方法做权限管控,节省代码。
4、可扩展,可插拔。

session的确是一种很正确的登录方式,题主肯定是觉得为什么session这么简单的方式不用,要用Shiro这种框架来做登录?

首先,你的系统需要用户登录的目的一定是某些页面需要登录才能查看,那么在这些页面中是否都需要加上一个判断ifsession.getxxx != null判断,这样比较繁琐,简单一点应该加上一个Filter,根据URL来过滤用户,这样你需要写一个Filter。—- 这些Shiro已经帮你做好了

然后,你可能需要不同的用户有不同的权限,例如A用户可以修改数据,B用户只有权限查看数据。那么你需要设计一个用户组、权限,给每个方法或者URL加上判断,是否当前登录的用户满足条件。 —- 这些Shiro已经帮你做好了

用户密码明文保存是不是安全,应不应该MD5加密,是不是应该加盐,你又要写密码加密的代码。 —- 这些Shiro已经帮你做好了

很多网站带有“记住我”或者“下次自动登录”这样的功能,如果你去自己开发,估计又要花不少时间,还做得不一定安全。 —- 这些Shiro已经帮你做好了

发表评论

电子邮件地址不会被公开。 必填项已用*标注