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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: nxgx在线观看国产中文 | 亚洲嫩模吧粉嫩粉嫩冒白浆 | 91亚洲在线 | 久久不卡免费视频 | 2022av小四郎的最新地址 | 亚洲欧美综合在线观看 | 日韩a一级欧美一级 | 国产精品合集久久久久青苹果 | 成人a级特黄毛片 | 精品一区二区三区在线视频观看 | 午夜片神马影院福利 | 欧美不卡一区二区三区 | 火影小南被爆羞羞网站 | 亚洲毛片网 | 四虎影视4hutv最新地址在线 | 91亚洲精品第一综合不卡播放 | 91高清国产视频 | 关晓彤被调教出奶水 | 香蕉久久久 | 视频在线观看高清免费 | 欧美同性猛男videos | 国产在线观看精品 | 免费观看成年人视频 | 范冰冰好紧好滑好湿 | 538精品视频在线观看 | japanesexxxx日本妞 | 亚洲成色www久久网站 | 日韩成人在线影院 | 失禁尿丝袜vk | 国产精品亚洲精品观看不卡 | 九九久久国产精品免费热6 九九精品视频一区二区三区 | 欧美添下面视频免费观看 | 四虎影库紧急大通知 | 成人在线观看网站 | 美国玩尿眼道videos | 国产精品免费精品自在线观看 | 免费看日产一区二区三区 | 国产一级特黄在线播放 | 精品精品精品 | 亚洲色图网址 | 网红思瑞一区二区三区 |