一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - play for scala 實現SessionFilter 過濾未登錄用戶跳轉到登錄頁面

play for scala 實現SessionFilter 過濾未登錄用戶跳轉到登錄頁面

2020-07-07 13:22唐際忠 JAVA教程

這篇文章主要介紹了play for scala 實現SessionFilter 過濾未登錄用戶跳轉到登錄頁面的相關資料,需要的朋友可以參考下

一、編寫SessionFilter.scala代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package filters
import javax.inject.{Inject, Singleton}
import akka.stream.Materializer
import controllers.routes
import play.api.mvc.{Filter, RequestHeader, Result, Results}
import scala.concurrent.Future
@Singleton
class SessionFilter @Inject()(implicit val mat: Materializer) extends Filter {
 def apply(nextFilter: RequestHeader => Future[Result])
      (requestHeader: RequestHeader): Future[Result] = {
  if (!requestHeader.session.get("user").isDefined && !requestHeader.path.contains("/signin") && !requestHeader.path.contains("/assets/")) {
   Future.successful(Results.Redirect(routes.SignController.showSignin()))
  } else {
   nextFilter(requestHeader)
  }
 }
}

說明:

!requestHeader.session.get("user").isDefined 是用來判斷session中是否存在user

!requestHeader.path.contains("/signin") 是用來排除登錄頁面,這個頁面不登錄也應該是可見的,防止出現死循環跳轉

!requestHeader.path.contains("/assets/") 是用來排除靜態資源文件的,如圖片、css、JavaScript等

二、在app目錄下的Filters.scala中使用SessionFilter

Filters.scala這個文件是activator自動生成的模板,要使用SessionFilter只要在里面加上sessionFilter: SessionFilter和Seq(sessionFilter)就可以了

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import javax.inject._
import filters.{ExampleFilter, SessionFilter}
import play.api._
import play.api.http.HttpFilters
import play.api.mvc._
/**
 * This class configures filters that run on every request. This
 * class is queried by Play to get a list of filters.
 *
 * Play will automatically use filters from any class called
 * `Filters` that is placed the root package. You can load filters
 * from a different class by adding a `play.http.filters` setting to
 * the `application.conf` configuration file.
 *
 * @param env Basic environment settings for the current application.
 * @param exampleFilter A demonstration filter that adds a header to
 * each response.
 */
@Singleton
class Filters @Inject() (
 env: Environment,
 exampleFilter: ExampleFilter, sessionFilter: SessionFilter) extends HttpFilters {
 override val filters = {
  // Use the example filter if we're running development mode. If
  // we're running in production or test mode then don't use any
  // filters at all.
  if (env.mode == Mode.Dev) Seq(exampleFilter) else Seq.empty
  Seq(sessionFilter)
 }
}

以上所述是小編給大家介紹的play for scala 實現SessionFilter 過濾未登錄用戶跳轉到登錄頁面,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.cnblogs.com/tangjizhong/archive/2016/11/25/6100654.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久精品一区二区免费看 | 欧美亚洲天堂网 | 亚洲国产影院 | 青草视频网 | 国产综合成人亚洲区 | 国产欧美va欧美va香蕉在线观 | 天天欲色成人综合网站 | 99久久99热久久精品免费看 | 久青草国产97香蕉在线视频 | aaa毛片手机在线现看 | 精品免费视在线视频观看 | 成人在线免费观看 | 极品妖艳许清赵丽全文免费阅读 | 亚洲国产日韩欧美一区二区三区 | 女教师三级做受 | 亚洲国产第一区二区香蕉日日 | 国产成人一区二区三区视频免费蜜 | 暖暖视频免费观看视频中国.韩剧 | 精品久久香蕉国产线看观看麻豆 | 青青草原网 | 午夜在线播放免费人成无 | 日本午夜vr影院新入口 | 污小说在线阅读 | 国产三级精品91三级在专区 | 亚洲AV永久无码精品老司机蜜桃 | 免费永久观看美女视频网站网址 | k逼| 美女吃jj| 久久伊人电影 | 114级毛片免费观看 1024亚洲天堂 | 3d动漫免费 | 狠狠插入| 日本xxwwwxxxx| 91夜色视频 | 人人爽人人香蕉 | 免费看黄色片网站 | 国产成人影院 | 九二淫黄大片看片 | 天堂va亚洲va欧美va国产 | 91日本| 白丝爆动漫羞羞动漫网站 |