shiro配置登录验证(前后端分离项目)
本次只是记录一下启用shiro配置过程遗忘掉的几个关键点,首先项目是前后端分离的后台,提供json格式的接口数据,但又是一个web项目,现在要控制登录之后才能使用
1、ShiroFilterFactoryBean我这里是一个自定义的,继承ShiroFilterFactoryBean,重写了setFilterChainDefinitions方法,因为动态权限数据是从数据库查来的,下面说这个bean的loginUrl和unauthorizedUrl属性,一般这俩个配置的是一样的,这个属性的值配置的/login,这个地址不一定要有,项目没有这个requestmapping地址也没有问题,关键在filterChainDefinitions里面这个/login地址要配置成anon,项目用来登录的接口也要在这里配上anon,前端用的js和css,图片地址要在这里配置上anon,其它的全部是authc
2、如果有自定义的filter,配置filters的时候,entry里的key要和filterChainDefinitions里的有的对应上(比如前面用的authc),filterChainDefinitions里用的验证名,和自定义的filter用的key一样的时候,这个filter才会起作用
3、自定义的filter在重写isAccessAllowed方法的时候,要判断请求是不是ajax请求,是ajax请求没有权限或登录失效要用response返回json数据,不能跳转登录页面,还有一点如果使用response里的out返回给前端数据,那么当前方法要return false,不然会报Cannot call sendError() after the response has been committed 这个错
4、登录的时候密码验证是自己些的realm中doGetAuthenticationInfo这个方法中,如果前面使用的UsernamePasswordToken登录的,这里的token可以转换成UsernamePasswordToken,从里面拿到的用户名和密码,前面登录创建UsernamePasswordToken的时候用的什么参数,这里就会拿到什么
1、ShiroFilterFactoryBean我这里是一个自定义的,继承ShiroFilterFactoryBean,重写了setFilterChainDefinitions方法,因为动态权限数据是从数据库查来的,下面说这个bean的loginUrl和unauthorizedUrl属性,一般这俩个配置的是一样的,这个属性的值配置的/login,这个地址不一定要有,项目没有这个requestmapping地址也没有问题,关键在filterChainDefinitions里面这个/login地址要配置成anon,项目用来登录的接口也要在这里配上anon,前端用的js和css,图片地址要在这里配置上anon,其它的全部是authc
2、如果有自定义的filter,配置filters的时候,entry里的key要和filterChainDefinitions里的有的对应上(比如前面用的authc),filterChainDefinitions里用的验证名,和自定义的filter用的key一样的时候,这个filter才会起作用
3、自定义的filter在重写isAccessAllowed方法的时候,要判断请求是不是ajax请求,是ajax请求没有权限或登录失效要用response返回json数据,不能跳转登录页面,还有一点如果使用response里的out返回给前端数据,那么当前方法要return false,不然会报Cannot call sendError() after the response has been committed 这个错
4、登录的时候密码验证是自己些的realm中doGetAuthenticationInfo这个方法中,如果前面使用的UsernamePasswordToken登录的,这里的token可以转换成UsernamePasswordToken,从里面拿到的用户名和密码,前面登录创建UsernamePasswordToken的时候用的什么参数,这里就会拿到什么
相关推荐
杜鲁门 2020-11-05
luckyxl0 2020-08-16
Dullonjiang 2020-08-09
xclxcl 2020-08-03
zmzmmf 2020-08-03
MicroBoy 2020-08-02
ganjing 2020-08-02
likesyour 2020-08-01
zmzmmf 2020-07-09
MicroBoy 2020-07-05
zzhao 2020-06-26
子云 2020-06-18
visionzheng 2020-06-07
neweastsun 2020-06-04
ErixHao 2020-06-03
GDreams0 2020-06-01
ganjing 2020-05-29
zmzmmf 2020-05-28
ganjing 2020-05-22