场景 当后台项目由部署在一台改为部署在多台以后,解决session共享问题最常用的办法就是把session存储在redis等缓存中.关于session和cookie概念这里就不再赘述了,在springboot-security环境下,把session存储到redis中共享是非常非常简单的,除了多了一些配置,几乎不用改任何代码.共享session达到的效果就是,用户在一台服务器上面登录成功后,访问另外一台,用户也是处于登录状态.下面创建两个一样的项目,来配置session共享. 增加依赖 把ses…
同一个应用在运行多个tomcat实例的时候,经常需要共享Session.tomcat配置共享session有多种方式 1.利用tomcat自身集群特性进行配置: 2.利用Memcache第三方缓存进行配置: 3.利用Redis第三方缓存进行配置: 由于生产环境我们主使用了redis(在阿里云中使用了redis服务)本文重点介绍了tomcat利用redis进配置session共享. 重点在于tomcat 8.x 因为tomcat7还有点不同,tomcat7的配置可以利用一个开源组件,直接配置即可以…
增加Security配置类 前面演示了一个简单的登录入门例子,使用springboot-security默认的配置实现,虽然非常简单,但是基本实现了登录功能.不过在生产环境下,显然不能仅仅使用如此简单的登录功能,我们还需要更多个性化的登录配置,所以我们要使用配置类来代替默认配置.新建一个配置类 WebSecurityConfig,继承 WebSecurityConfigurerAdapter : 现在的配置类没有配置任何内容,重启项目,访问登录页面发现找不到默认登录页面了: 访问主页,发现可以直…
前言 这一章写的很没有底气,因为我完全不懂一个正经的后台应用是怎么结构分层的, 所有只能按照我自己的理解去写,即使这样也仅仅只分离出了controller层, 至于所谓的service层,dao层,完全不懂该怎么分离出来. 所以这一章仅供参考.如果有人能指点一下,不胜感激. 正文 数据库是采用的mysql,所以需要在本机安装一个mysql. 具体安装这里不多说了,请移步 菜鸟教程. 置于MySQL图形化管理工具推荐使用 navicat 或者 heidisql 1 安装依赖 npm install…
从.Net到Java学习系列目录 SpringBoot Session共享 修改pom.xml添加依赖 <!--spring session--> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency> 添加配置类RedisSess…
默认用户 前面的例子中我们使用的都是配置文件中配置好的默认用户: 除了可以配置账号密码,还可以在配置文件中配置角色: 这个角色是后面实现权限过滤的重要内容,后面会重点讨论. 在内存中配置默认用户 这样在配置文件中默认用户局限性还是很大的.我们想配置多个不同的用户,每个用户拥有不同的角色,并且还有最重要的一点,用户的密码应该是加密的,不应该是明文. 想在内存中配置,首先要实现security配置类的 configure(AuthenticationManagerBuilder auth)方法: 然…
Web应用安全管理 Web应用的安全管理,主要包括两个方面的内容,一个是用户身份的认证,即用户登录的设计,二是用户授权,即一个用户在一个应用系统中能够执行哪些操作的权限管理.权限管理的设计一般使用角色来管理,即给一个用户赋予哪些角色,这个用户就具有哪些权限. Spring框架体系中,经典的安全体系框架是Security.关于系统的安全管理及各种设计,Spring Security已经大体上都实现了,只需要一些配置和引用就能够正常使用.SpringBoot使用Security更加的简单,因为Spr…
自定义登录页面 前面无论是使用默认配置,还是自定义配置类,都是使用的springboot-security自带的登录页面,自带的登录页面在这个版本虽然设计的非常不错,但是在实际开发中,我们通常还是使用自己的登录页面.下面来写一个非常简单的登录页面: 这个页面只有填写用户名和密码的地方,然后就是一个form表单提交,没有任何其他内容.特别注意!!这里页面虽然引入了thymeleaf模板,但是没有使用thymeleaf的任何标签属性,使用的是原生的html标签.继续下面,然后是定义登录页面的路径:…
其它授权配置 security的配置类中,对所有路径进行了统一授权配置.但是有的内容我们也需要让未登录游客有权限访问,比如js,css等静态文件,还有一些宣传页面等等.这些路径可以单独配置: 我们来试验一些,springboot项目的试图页面一般放在resource文件夹下面的templates文件夹下.而静态文件一般放在resource文件夹下面的static文件夹下.我们来建立一个test.css文件, 随便写点内容,启动项目看看效果: 可以看到在未登录的情况下是可以访问的.也可以弄一个简单…
用户授权 前面讨论过,Web应用的安全管理,主要包括两个方面的内容,一个是用户身份的认证,即用户登录的设计,二是用户授权,即一个用户在一个应用系统中能够执行哪些操作的权限管理.前面介绍了登录,下面简单介绍一下用户授权.用户拥有的权限是根据用户的角色来决定的,并且security中,用户的权限可以控制到方法级别. 方法级别的权限控制 每个url的访问都是定义在controller方法上面的,因此需要配置方法权限.开启方法级别的权限,需要引入@EnableGlobalMethodSecurity注解…