首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Security 核心类

在认证时,如果 ProviderManager 的认证结果不是 null,则说明认证成功,不再进行其他方式的认证,并且作为认证的结果保存在 SecurityContext 中。...如果不成功,则抛出错误信息 ProviderNotFoundException。...如果正确,则返回一个数据库中的用户信息。 UserDetails UserDetail 是 Spring Security 的用户实体,包含用户名、密码、权限等信息。...UserDetails 提供以下几种方法: String getPassword():返回验证用户密码,无法返回则显示为 null String getUsername():返回验证用户名,无法返回则显示为...boolean isEnabled():是否被禁用,禁用的用户不能进行身份验证。 UserDetailsService 用户相关的信息通过 UserDetailsService 接口来加载。

17920
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Security 登录认证流程详细分析 源码与图相结合

    列表中的每一个 AuthenticationProvider将会被依次查询是否需要通过其进行验证,每个 provider的验证结果只有两个情况:抛出一个异常或者完全填充一个 Authentication...UserDetails ,如果提供的凭据不正确,则可以选择立即抛出AuthenticationException (如果需要以用户身份绑定到资源以获得或生成一个UserDetails ) */ protected...接口 UserDetailsService简单说就是定义了一个加载对应的UserDetails的接口,我们在使用中,大都数都会实现这个接口,从数据库中查询相关的用户信息。...//加载用户特定数据的核心接口。...boolean isCredentialsNonExpired(); //指示用户是启用还是禁用。 无法对禁用的用户进行身份验证。

    57540

    SpringSecurity

    授权 (你能干什么) 指的是验证某个用户是否有权限执行某个操作,在一个系统中,不同用户所拥有得权限是不同得,系统会根据不同得角色分配不同得功能。...SpringSecurity对项目进行认证和用户得授权时,基于Sevrvlet过滤器和Spring AOP,通过各种各样得拦截器来实现的权限控制,提供了安全性解决方案,可以在web项目请求和方法调用过程中处理身份认证和授权...SpringSecurity未配置时默认得登录页面,提供默认用户信息:用户名user,密码在服务器启动时自动生成显示在控制台。 登录成功跳转到static下得index.html页面。...异常信息保存在session中,参数名为SPRING_SECURITY_LAST_EXCEPTION 页面上可以通过session获取SPRING_SECURITY_LAST_EXCEPTION来获取异常信息... 修改错误提示信息 security中默认异常信息存放在 在resources

    9810

    项目之通过Spring Security获取当前登录的用户的信息(6)

    使用控制器转发注册页面 将用户注册的register.html文件移动到templates文件夹下。...补全:学生注册时分配角色 在“学生注册”的业务中,应该及时获取新插入的用户数据的id,并将该用户id和角色id(学生角色的id固定为2)插入到user_role数据表中,以记录新注册的学生的角色。...在开发项目时,之所以需要将业务异常继承自RuntimeException,是因为: 便于编写代码,避免使用异常时需要使用严格的语法声明抛出或捕获,因为RuntimeException及其子孙类异常都不强制要求...try...catch或throw/throws,并且,业务层抛出异常后,在控制器层也是全部再次抛出,交由统一处理异常的机制进行处理的; 保证事务机制的正常使用。...在用户登录时,应该读取用户的权限,以完成Spring Security在验证过程中的授权,以保证后续在进行某些访问时,能给出正确的判断,使得某些用户可以执行某些操作,而另一些用户可能因为没有权限而不能执行这些操作

    1.9K10

    写了这么久的业务连异常都不知道怎么处理吗

    错误: 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。...在Java API中已经定义了许多异常类,这些异常类分为两大类,错误Error和异常Exception。...在Java中,错误通常是使用Error的子类描述。...所以在使用这个对象引用调用其他方法之前,要先对它进行检查,可以创建一个代表错误信息的对象,并且将它从当前环境中抛出,这样就把错误信息传播到更大的环境中。...潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合。当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,即为合适的异常处理器。

    30510

    项目之用户登录和访问权限的控制(5)

    用户登录-准备工作 在开发注册功能时,在SecurityConfig类中配置以如下代码: @Override protected void configure(HttpSecurity http) throws...Spring-Security显示的,此处不要抛出异常 if (user == null) { return null; } // 组织“用户详情”对象...接下来,自定义控制器,设计登录页面的请求路径,在处理该路径的请求时,直接转发到**/templates/login.html**文件,由于Thymeleaf在整合时已经将前缀配置为了/templates...,所有未知的异常也会被处理,可以看到表示错误信息的JSON数据。...可以尝试直接添加权限,使得用户可以访问以上URL,例如,在业务层实现类中,在处理“获取用户详情”时,为该用户详情封装匹配的权限字符串(与控制器要求的权限字符串保持一致即可): // 权限字符串数组 String

    83820

    自定义Spring Security的用户认证逻辑

    前言 在我们上篇中,用户的用户名是固定的,密码也是由框架为我们生成的,那么我们实际场景中,用户的登录信息应该是从数据库中读取的。...如何处理用户信息获取 在Spring Security中获取用户信息是被封装在一个叫UserDetailsService的接口里面的,他只有一个方法,这个方法会根据用户名去我们的存储中读取用户信息,并封装成...第一个参数和第二个参数是用来做认证的,第三个参数就是我们给这个用户的授权用的。 我们来启动服务,在登录页面上随便输一个用户名和密码。...matches是Spring Security自己调用的,他可以把拿到返回的UserDetails里面的password跟用户在登录时候输入的密码进行匹配,如果匹配上是返回true,匹配不上就会抛出异常...,在页面显示错误信息。

    1.1K40

    Spring Security+JWT+Vue 手撸一个前后端分离无状态认证 Demo

    ,网上的向内存中写入用户如上代码注释部分,这样写虽然简单,但是有一些问题,在打个断点我们就能知道种方式调用的是 Spring Security 的是 ProviderManager 这个方法,这种方法不方便我们抛出入用户名不存在或者其异常...,它都会抛出 Bad Credentials 异常,不会提示其它错误, 如下图所示。...Spring Security 为了安全考虑,会把所有的登陆异常全部归结为 Bad Credentials 异常,所以为了能抛出像用户名不存在的这种异常,如果采用 Spring Security 默认的登陆方式的话...通过配置自定义的用户查询实现类,我们可以直接在 CustomUserDetailsService 里抛出没有发现用户名的异常,然后再设置 hideUserNotFoundExceptions 为 false...这样就可以区别是密码错误,还是用户名不存在的错误了, 但是这种方式还是有一个问题,不能抛出像账户被锁定这种异常,理论上这种功能可以继承 AbstractUserDetailsAuthenticationProvider

    5.6K21

    SpringSecurity入坑(五)

    基于SpringSecurity做基本权限验证,在之前都写的差不多了,顺便加入了在登录时,动态验证码的验证,这些都是在SpringSecuity提供好的基础上,那如何自定义这些登录的实现,仔细看一下,不管是基于内存验证...* 如果需要自定义逻辑来比较 UserDetails 和或 * UsernamePasswordAuthenticationToken 的其他*属性,则这些属性也应出现在此方法中。...", "密码错误"); } } // 使用父类的方法校验用户 super.retrieveUser...* 如果需要自定义逻辑来比较 UserDetails 和或 * UsernamePasswordAuthenticationToken 的其他*属性,则这些属性也应出现在此方法中。...SneakyThrow 将避免javac坚持要求您捕获或向前抛出方法主体中语句声明它们生成的所有检查异常。

    87860

    Spirng Security知识点整理

    的使用 获取属性 新建demo.html 权限判断 设置用户角色和权限 控制页面显示效果 退出登录 logout其他常用配置源码解读 SpringSecurity中的CSRF 什么是CSRF Spring...如果通过用户名没有查询到对应的数据,应该抛出UsernameNotFoundException,系统就知道用户名没有查询到。...这些方法一般都用于用户已经被认证后,判断用户是否具有特定的要求 hasAuthority(String) 判断用户是否具有特定的权限,用户的权限是在自定义登录逻辑中创建 User 对象时指定的。...在客户端登录页面中添加 remember-me 的复选框,只要用户勾选了复选框下次就不需要进行登录了。...在页面中根据用户权限和角色判断页面中显示的内容 通过权限判断: 新增 <button

    1.5K20

    Spring Security的认证和授权

    基于session的认证方式如下图: 它的交互流程是,用户认证成功后,在服务端生成用户相关的数据保存在session(当前会话)中,发给客户端的sesssion_id存放到cookie中,这样用户客户端请求时带上...但是它只会处理两类异常:AuthenticationException和AccessDeniedException,其它的异常它会继续抛出。...的值为true,则表示通过,否则将抛出异常AccessDeniedException。...在快速上手工程security-spring-boot中创建登录页面login.jsp,目录结构如下: 由于是在SpringBoot项目中创建jsp文件,需在项目属性中配置web资源文件夹路径,这里指向我们刚刚创建的...logoutHandler 一般来说,LogoutHandler的实现类被用来执行必要的清理,因而他们不应该抛出异常。

    2.4K30

    Spring全家桶之SpringSecurity

    异常 UsernameNotFoundException 用户名没有发现异常。 在loadUserByUsername 中是需要通过自己的逻辑从数据库中取值的。...这些方法一般都用于用户已经被认证后,判断用户是否具有特定的要求。...1.hasAuthority(String) 判断用户是否具有特定的权限,用户的权限是在自定义登录逻辑中创建User 对象时指定的。 下图中admin 就是用户的权限。admin 严格区分大小写。...控制页面显示效果 在thymeleafDemo.html 页面中根据用户权限和角色判断页面中显示的内容 通过权限判断: 用户退出成功后 ,跳转的页面 //.logoutUrl("/logout") //修改用户退出时,超链接的name属性值,一般不推荐修改 点击退出后页面显示的

    3.6K10
    领券