目的:在没有提供自定义登录页面的情况下,系统提供默认的登录页面。
①:application.properties 里写明 默认的登录页面
在以下路径中新建三个类:
先看SecurityProperties类,代码如下:
它是一个properties的配置类,后面主要是通过它来调用值。prefix的值是根据application.properties里定义的名字来的,是一个前缀。
BrowserSecurity.java代码如下:
SecurityProperties类的属性名browser与BrowserSecurity类的属性loginPage,名字不可随意定义。加上prefix组合在一起要与application.properties里定义的属性相同。
SecurityCoreConfig类的作用就是要使上述的配置生效:
当且仅当application.properties里没有配置imooc.security.browser.loginPage时,BrowserSecurity类中定义的loginPage才会生效。
②:更改BrowserSecurityConfig类的代码
新建Controller,处理"/authentication/require"请求,主要代码如下:
代码很好懂,如果是通过html方式提交的请求就将其引导进入登录页面,如果不是就返回提示权限不足的提示信息{JSON}。对红框部分使用到的类做下介绍。RequestCache类,将用户访问地址栏被重定向到"/authentication/require"的请求放入session。RedirectStrategy类,用作重定向跳转,下面使用到的sendRedirect方法的三个参数也很好懂,请求,响应,要跳转的URL。
SavedRequest类,将缓存到session里的请求拿出。
至此就完成了一个可重用架构的实现。