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

哪个网站可以学做包子济南百度推广优化

哪个网站可以学做包子,济南百度推广优化,网站banner图怎么设计,网站怎样做优化调整文章目录 SpringSecurity 第三方认证实现方法级别的安全 SpringSecurity 第三方认证 在登录网页时,时常有用其他账号登录的方式,它们能够让用户避免在Web站点特定的登录页上自己输入凭证信息。这样的Web站点提供了一种通过其他网站(如Facebo…

文章目录

  • SpringSecurity 第三方认证
  • 实现方法级别的安全

SpringSecurity 第三方认证

在登录网页时,时常有用其他账号登录的方式,它们能够让用户避免在Web站点特定的登录页上自己输入凭证信息。这样的Web站点提供了一种通过其他网站(如Facebook)登录的方式,用户可能已经在这些其他的网站登录过了

这种类型的认证是基于OAuth2或OpenID Connect(OIDC)的。OAuth2是一个授权规范。OpenID Connect是另一个基于OAuth2的安全规范,用于规范化第三方认证过程中发生的交互

要在Spring应用中使用这种类型的认证,我们需要在构建文件中添加OAuth2客户端的starter依赖,如下所示:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>

接下来至少要配置一个或多个oauth2或者openID Connect服务器的详细信息,也可以通过一些额外的属性来配置其他客户端

首先有一些通用的属性需要设置,通用格式如下:

spring:security:oauth2:client:registration:<oauth2 or openid provider name>:clientId: <client id>clientSecret: <client secret>scope: <comma-separated list of requested scopes>

比如说使用fb登录:

spring:security:oauth2:client:registration:facebook:clientId: <facebook client id>clientSecret: <facebook client secret>scope: email, public_profile

其中,客户端ID和secret是用来标识我们的应用在Facebook中的凭证。你可以在Facebook的开发者网站新建应用来获取客户端ID和secret。scope属性可以用来指定应用的权限范围

当用户尝试访问需要认证的页面时,就会重定向至认证页面,他们会被要求根据所请求的权限范围对我们的应用程序授权。最后,用户会被重新定向到我们的应用程序,此时他们已经完成了认证

但是,我们如果通过声明SecurityFilterChain bean来自定义安全配置,那么除了其他的安全配置,还需要启用OAuth2登录,如下所示:

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {return http.authorizeRequests().mvcMatchers("/design", "/orders").hasRole("USER").anyRequest().permitAll().and().formLogin().loginPage("/login").and().oauth2Login()....and().build();
}

如果同时需要支持传统的通过用户名和密码登录,可以在配置中指定登录页,如下所示:

.and().oauth2Login().loginPage("/login")

应用程序始终都会为用户展示一个它本身提供的登录页,在这里,用户可以像往常一样选择输入用户名和密码进行登录。但是,我们也可以在同一个登录页上提供一个链接,从而允许用户使用Facebook登录。在登录页面的HTML模板中,这样的链接如下所示:

<a th:href = "/oauth2/authorization/facebook">Sign in with Facebook</a>

接下来,如何退出应用,只需在HttpSecurity对象上调用方法:

.and().logout()

该配置会建立一个安全过滤器,拦截对“/logout”的POST请求。所以,为了提供退出功能,我们只需要为应用的视图添加一个退出表单和按钮,如下所示:

<form method = "POST" th:action = "@{/logout}"><input type = "submit" value = "Logout"/>
</form>

用户点击按钮的时候,他们的会话将会被清理,这样他们就退出应用了。默认情况下,用户会被重定向到登录页面,这样他们可以重新登录。但是,如果你想要将他们导航至不同的页面,那么可以调用logoutSuccessUrl()指定退出后的页面,如下所示:

.and().logout().logoutSuccessUrl("/")

实现方法级别的安全

Web请求层面考虑安全问题很容易,但这一层面不一定是进行安全限制的最佳场所。有时候,最好在执行受保护的操作时再去校验一下用户是否通过了验证并被授予了足够的权限。

比如说当多个控制器调用同个方法时,就需要添加更多的匹配器来保护其他控制器的请求,作为替代方案,可以直接在方法上启用安全防护:

@PreAuthorize("hasRole('ADMIN')")
public void deleteAllOrders() {orderRepository.deleteAll();
}

@PreAuthorize注解会接受一个SpEL表达式,如果表达式的计算结果为false,这个方法将不会被调用;如果表达式的计算结果为true,方法就允许调用。在本例中,@PreAuthorize会检查用户是否具有ROLE_ADMIN的权限:如果具有,方法将会被调用,所有的订单会被删除;否则,它会将调用中止

如果@PreAuthorize阻止调用,那么Spring Security将会抛出AccessDeniedException。这是一个非检查型异常,所以我们不需要捕获它,除非想要在异常处理中添加一些自定义的行为。如果我们不捕获它,它将会往上传递,最终被Spring Security的过滤器捕获并进行相应的处理——要么返回HTTP 403页面,要么在用户没有认证的情况返回HTTP 403页面,要么在用户没有认证的情况下重定向到登录页面

要使@PreAuthorize发挥作用,需要启用全局的方法安全功能。为了实现这一点,需要使用@EnableGlobalMethodSecurity注解标注安全配置类,如下所示:

@Configuration
@EnableGlobalMethodSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {...
}

@PostAuthorize注解

它用在方法调用之后,通常来讲用处不是特别大。@PostAuthorize注解的运行机制和@PreAuthorize注解基本相同,只不过它的表达式是在目标方法调用完成并返回之后执行的。这样一来,在决定是否允许方法调用的时候,就能让表达式使用方法的返回值了

假设我们有一个能够根据ID来获取订单的方法。我们如果想限制这个方法,使其只能被管理员或订单所属的用户使用,就可以像这样使用@PostAuthorize注解:

@PostAuthorize("hasRole('ADMIN') || " +"returnObject.user.username == authentication.name")
public TacoOrder getOrder(long id) {...
}

如果判定安全的条件依赖于方法调用的返回值,那么该如何保证方法不被调用呢?我们可以先允许方法调用,并在表达式返回值为false时抛出一个AccessDeniedException,从而解决这个难题。

http://www.15wanjia.com/news/56356.html

相关文章:

  • 做的好的外贸网站全媒体广告策划营销
  • 网站开发承诺函太原网络营销公司
  • 网站做联盟还赚钱吗北京百度seo关键词优化
  • 厦门网站建设 php百度seo详解
  • 网站专题设计欣赏国际新闻消息
  • 建设银行的网站用户名网络推广有哪些常见的推广方法
  • 衡水企业网站建设价格下载爱城市网app官方网站
  • 做网站的题目如何进行网站制作
  • 自己做网站赚钱关键词排名工具有哪些
  • 公司如何申请一个网站seo外包公司兴田德润官方地址
  • 安徽芜湖网站建设网络推广的方式和途径有哪些
  • 方正隶变简体可以做网站用么郑州网站建设推广
  • 网站域名备案需要资料线上推广app
  • 北京微信网站建设报价上海搜索关键词排名
  • wordpress文章显示软件下载上海seo网站优化
  • 色情网站制作企业如何网络推广
  • 办公用品网站建设策划书谷歌搜索引擎免费入口 香港
  • 重庆网站建设是什么怎么做网站优化排名
  • 大连网站建设设计专业排名优化工具
  • 湖北建科建设工程有限公司网站google国际版
  • 江门网络营销厦门专业做优化的公司
  • 沈阳响应式网站建设百度电话查询
  • 做一婚恋网站多少钱上海seo公司
  • 深圳网站建设手机网站建设销售网站怎么做
  • 做电力招聘的有哪些网站百度推广公司电话
  • 网站建设流程包括哪些厦门seo百度快照优化
  • 网店装修定制沈阳seo关键词
  • 天津有哪些好的做网站公司创建网站需要什么条件
  • 企业网站策划书制作百度推广价格
  • 网站开发功能需求表成都百度推广排名优化