当前位置: 首页 > news >正文

泰安建设信息网站网络推广和运营的区别

泰安建设信息网站,网络推广和运营的区别,wordpress主题集成插件,红酒网站设计1.项目中认证的三种方式: 1.统一认证 认证通过由认证服务向给用户颁发令牌,相当于访问系统的通行证,用户拿着令牌去访问系统的资源。 2.单点登录,对于微服务项目,因为包含多个模块,所以单点登录就是使得用户…

1.项目中认证的三种方式:

 1.统一认证

 认证通过由认证服务向给用户颁发令牌,相当于访问系统的通行证,用户拿着令牌去访问系统的资源。

 2.单点登录,对于微服务项目,因为包含多个模块,所以单点登录就是使得用户可以在认证一次的情况下就可以访问所有的拥有对应权限的服务。

3.第三方认证

比如微信,qq的扫码登录功能,该功能基于ouath2实现 

 2.认证授权基础

 2.1配置

1.所需的依赖:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-security</artifactId>
</dependency>
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-oauth2</artifactId>
</dependency>

2.重启工程,访问http://localhost:63070/auth/r/r1

 

1、用户信息

在内存配置两个用户:zhangsan、lisi, zhangsan用户拥有的权限为p1,lisi用户拥有的权限为p2

2、密码方式

暂时采用明文方式

3、安全拦截机制

/r/**开头的请求需要认证

登录成功到成功页面

@Bean
public UserDetailsService userDetailsService() {//这里配置用户信息,这里暂时使用这种方式将用户存储在内存中InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();manager.createUser(User.withUsername("zhangsan").password("123").authorities("p1").build());manager.createUser(User.withUsername("lisi").password("456").authorities("p2").build());return manager;
}@Beanpublic PasswordEncoder passwordEncoder() {//密码为明文方式return NoOpPasswordEncoder.getInstance();}//配置安全拦截机制@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/r/**").authenticated()//访问/r开始的请求需要认证通过.anyRequest().permitAll()//其它请求全部放行.and().formLogin().successForwardUrl("/login-success");//登录成功跳转到/login-successhttp.logout().logoutUrl("/logout");//退出地址}

1、访问http://localhost:63070/auth/user/52  可以正常访问

2、访问http://localhost:63070/auth/r/r1 显示登录页面

账号zhangsan,密码为123,如果输入的密码不正确会认证失败,输入正确显示登录成功。

1、访问http://localhost:63070/auth/user/52  可以正常访问

2、访问http://localhost:63070/auth/r/r1 显示登录页面

账号zhangsan,密码为123,如果输入的密码不正确会认证失败,输入正确显示登录成功。

http.logout().logoutUrl("/logout");配置了退出页面,认证成功后访问/logout可退出登录。

配置用户及权限

配置用户拥有哪些权限。

    @Beanpublic UserDetailsService userDetailsService() {//这里配置用户信息,这里暂时使用这种方式将用户存储在内存中InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();manager.createUser(User.withUsername("zhangsan").password("123").authorities("p1").build());manager.createUser(User.withUsername("lisi").password("456").authorities("p2").build());return manager;}

指定资源与权限的关系

比如:查询一个用户的信息,用户信息就是系统的资源,要访问资源需要通过URL,所以我们在controller中定义的每个http的接口就是访问资源的接口。

下边在controller中配置/r/r1需要p1权限,/r/r2需要p2权限。

hasAuthority('p1')表示拥有p1权限方可访问。

@RestController
public class LoginController {....@RequestMapping("/r/r1")@PreAuthorize("hasAuthority('p1')")//拥有p1权限方可访问public String r1(){return "访问r1资源";}@RequestMapping("/r/r2")@PreAuthorize("hasAuthority('p2')")//拥有p2权限方可访问public String r2(){return "访问r2资源";}

2.2工作原理

        Spring Security解决的是安全访问控制的问题,而安全访问控制就是对访问系统资源的请求进行拦截,当初始化Spring Security时,会创建一个名为SpringSecurityFilterChain的Servlet过滤器,类型为 org.springframework.security.web.FilterChainProxy,它实现了javax.servlet.Filter外部的请求会经过此类

         FilterChainProxy知识一个代理,而真正起作用 的是FilterChainProxy中的SecurityFilterChain所包含的各个Filter,同时这些Filter作为Bean被Spring管理。但是他们并不直接处理用户认证,也不直接处理用户的授权,而是把他们交给了认证管理器和决策管理器进行处理。spring Security功能的实现主要是由一系列过滤器链相互配合完成

  •  SecurityContextPersistenceFilter    这个Filter是整个拦截过程的入口和出口(也就是第一个和最后一个拦截器),会在请求开始时从配置好的 SecurityContextRepository 中获取 SecurityContext然后把它设置为SecurityContextHolder。在请求完成后将 SecurityContextHolder 持有SecurityContext 再保存到配置好的 SecurityContextRepository,同时清除 securityContextHolder 所持有的 SecurityContext;
  • UsernamePasswordAuthenticationFilter 用于处理来自表单提交的认证。该表单必须提供对应的用户名和密码,其内部还有登录成功或失败后进行处理AuthenticationSuccessHandler 和 AuthenticationFailureHandler,这些都可以根据需求做相关改变;

  • FilterSecurityInterceptor 是用于保护web资源的,使用AccessDecisionManager对当前用户进行授权访问,前面已经详细介绍过了

  • ExceptionTranslationFilter 能够捕获来自 FilterChain 所有的异常,并进行处理。但是它只会处理两类异常:AuthenticationException 和 AccessDeniedException,其它的异常它会继续抛出。

Spring Security的执行流程如下:

 

  1. 用户提交用户名、密码被SecurityFilterChain中的UsernamePasswordAuthenticationFilter过滤器获取到,封装为请求Authentication,通常情况UsernamePasswordAuthenticationToken这个实现类。
  2. 然后过滤器将Authentication提交至认证管理器(AuthenticationManager)进行认证
  3. 认证成功后,AuthenticationManager身份管理器返回一个被填充满了信息的(包括上面提到的权限信息,身份信息,细节信息,但密码通常会被移除)Authentication实例。
  4. SecurityContextHolder安全上下文容器将第3步填充了信息的Authentication,通过SecurityContextHolder.getContext().setAuthentication(…)方法,设置到其中。
  5. 可以看出AuthenticationManager接口(认证管理器)是认证相关的核心接口,也是发起认证的出发点,它的实现类为ProviderManager。而Spring Security支持多种认证方式,因此ProviderManager维护着一个List<AuthenticationProvider>列表,存放多种认证方式,最终实际的认证工作是由AuthenticationProvider完成的。咱们知道web表单的对应的AuthenticationProvider实现类为DaoAuthenticationProvider,它的内部又维护着一个UserDetailsService负责UserDetails的获取。最终AuthenticationProvider将UserDetails填充至Authentication。
http://www.15wanjia.com/news/52397.html

相关文章:

  • 自建外贸推广网站有哪些游戏代理平台
  • 淘宝客怎么样做网站武汉seo哪家好
  • 摄影瀑布流网站模板太原seo关键词优化
  • 如何规范网站使用让顾客进店的100条方法
  • 公安网站备案到底需要什么seo搜索优化是什么意思
  • 免费打开网站培训学校资质办理条件
  • 企业宣传网站建设模板网络推广方案的基本思路
  • 购物网站建设的目标线上销售方案
  • 项目协同管理软件seo排名外包
  • 十堰市网络运营中心福州短视频seo网红
  • 中国建筑官网一测二测成绩多少算及格seo搜索引擎优化关键词
  • 赣县城乡规划建设局网站百度官网平台
  • 二维码生成器网站源码百度爱采购推广平台
  • 做中东服装有什么网站免费开源网站
  • 建站公司走量渠道网络营销课程论文
  • 哈尔滨百度网站排名惠州seo关键词
  • 如何开个公司网站合肥seo网站排名优化公司
  • 做电影网站用什么服务器考试培训
  • 专业网站开发报价网站建设策划书案例
  • 找建站公司优化疫情防控 这些措施你应该知道
  • 搭建网站一条龙上海seo优化培训机构
  • 网站开发代码说明书曲靖seo建站
  • 使用wordpress做网站合肥关键词快速排名
  • 沙市做网站weisword今日军事新闻头条打仗
  • 外贸网站服务商网络营销代运营外包公司
  • 建设银行学习网站2022年最火文案
  • 自己建设一个网站步骤提高工作效率心得体会
  • 实体企业做网站好么地推的方法和技巧
  • cvm服务器做网站淘宝推广哪种方式最好
  • 公司给别人做的网站违法的吗兰州百度推广的公司