spring security 入门教程

一、初始化三部曲

1.在pom文件中导入依赖
在这里插入图片描述
2.web.xml文件中创建filter

此时也包括了在contextConfigLocation中初始化spring-security.xml配置文件
3.spring-security核心配置文件


其中<security:intercept-url pattern="/**" access=“ROLE_USER”>表示所有资源都会被拦截,必须具有"ROLE_USER"这样的角色权限才能访问。此处用户信息保存在xml文件中,后续会改成数据库形式。

二、修改自定义的login.jsp,登陆成功页面、登陆失败页面

1.自定义login.jsp
在这里插入图片描述
2.修改spring security.xml中配置信息
在这里插入图片描述
当访问login.html和failer.html和其他的静态资源(此处为bootstrap中的静态资源)时,不进行拦截

自定义登陆页面,指定login.html,指定登陆的url(即login.html中的form的action),指定登陆的username和password的在login.html中的名称,指定登陆成功和失败的页面

三、Spring Security使用数据库完成认证

方式有很多种,此处介绍UserDetails和UserDetailsService来完成操作。UserDetails为Spring Security为用户提供的用于封装当前正在认证的用户信息的对象。UserDetails为接口,User为实现类。UserDetailsService也是一个接口,规范化了在做认证时的方法是哪一个。
流程:
在这里插入图片描述
原来是通过Controller调用service进行判断,由于在springsecurity.xml配置文件中已经指定了login.html和username、password,所以controller这一步省略,直接调用service完成认证操作。而选择哪一个service,要在配置文件中进行指定,这时候UserDetailsService接口就派上用场了。
我们的UserService就必须实现UserDetailsService接口,实现其中的loadUserByUsername方法。
1.换成从数据库中提取用户信息
在这里插入图片描述
这里的Userservice即之前所述的扩展了UserdetailsService接口的Service
2.如何将自定义的用户信息变为Userdetails
在这里插入图片描述
利用UserDetails的实现类User,通过观察其源码的构造方法可知,在构造方法中加入username和password和权限即可创建。
3.为User添加权限
在这里插入图片描述
UserService中重写的方法,其中getAuthority为
在这里插入图片描述

应该在获取用户信息的时候就获取角色信息,添加到User中。此处涉及到的多表查询(根据用户ID查询权限信息)不做深究。
4.如果用户账户的状态为0(不可用),调用User的其他构造函数。
在这里插入图片描述
根据此构造函数修改User构造时的代码,即修改“boolean enabled”:
在这里插入图片描述
5.用户退出,即用户注销,十分简单
在SpringSecurity.xml配置文件中加入注销配置:
在这里插入图片描述
指定logout访问路径(在注销按钮上指定action),退出后跳转的页面,把session杀死。

四、服务器端方法级的权限控制

在服务器端我们可以使用Spring Security提供的注解方式来进行权限控制。其中有JSR-250注解,@Secured注解,和支持表达式的注解,这三种注解都是默认没有启用的,主要在配置文件中开启。
(1)JSR-250注解

1.开启JSR-250注解
在这里插入图片描述
2.在指定的方法上使用
在Controller上面使用注解
在这里插入图片描述
在这里插入图片描述
3.在pom文件中导入依赖
在这里插入图片描述

(2)@Security注解
1.开启使用
在这里插入图片描述
2.在指定的方法上使用
注意,不同于JSR-250,@Security不能省略"ROLE_"。
在这里插入图片描述
3.优点
为Spring Security包提供的,不需要额外导入依赖
(3)支持表达式注解
在这里插入图片描述
authentication.principal为获取当前访问的用户

五、页面端的权限控制

1.在pom文件中添加依赖
在这里插入图片描述
2.在jsp页面中导入
在这里插入图片描述
这样就能在jsp页面中使用spring security提供的标签
3.内置标签
可以获取当前正在操作的用户的信息
用于控制页面上某些标签是否可以显示
比如获取当前正在操作的对象的名称用于显示:
在这里插入图片描述
在这里插入图片描述
如果当前用户是ADMIN就能看见用户管理,如果不是则看不见,若想成功使用,需要在Spring Security配置文件中做修改:
在这里插入图片描述
改为允许使用表达式。同时拦截规则要变为表达式形式。
在这里插入图片描述


结束


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值