欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

play for scala 實(shí)現(xiàn)SessionFilter 過濾未登錄用戶跳轉(zhuǎn)到登錄頁面

 更新時間:2016年11月25日 11:35:00   作者:唐際忠  
這篇文章主要介紹了play for scala 實(shí)現(xiàn)SessionFilter 過濾未登錄用戶跳轉(zhuǎn)到登錄頁面的相關(guān)資料,需要的朋友可以參考下

一、編寫SessionFilter.scala代碼

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") 是用來排除登錄頁面,這個頁面不登錄也應(yīng)該是可見的,防止出現(xiàn)死循環(huán)跳轉(zhuǎn)

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

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

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

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 實(shí)現(xiàn)SessionFilter 過濾未登錄用戶跳轉(zhuǎn)到登錄頁面,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Java獲取當(dāng)前操作系統(tǒng)的信息實(shí)例代碼

    Java獲取當(dāng)前操作系統(tǒng)的信息實(shí)例代碼

    這篇文章主要介紹了Java獲取當(dāng)前操作系統(tǒng)的信息實(shí)例代碼,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Java方法遞歸調(diào)用實(shí)例解析

    Java方法遞歸調(diào)用實(shí)例解析

    這篇文章主要介紹了Java方法遞歸調(diào)用實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • Java使用FTPClient類讀寫FTP

    Java使用FTPClient類讀寫FTP

    這篇文章主要為大家詳細(xì)介紹了Java使用FTPClient類讀寫FTP的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 基于idea把maven工程轉(zhuǎn)換為web項(xiàng)目

    基于idea把maven工程轉(zhuǎn)換為web項(xiàng)目

    這篇文章主要介紹了基于idea把maven工程轉(zhuǎn)換為web項(xiàng)目,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Spring?Boot日志基礎(chǔ)使用之如何設(shè)置日志級別

    Spring?Boot日志基礎(chǔ)使用之如何設(shè)置日志級別

    這篇文章主要介紹了Spring?Boot日志基礎(chǔ)使用設(shè)置日志級別的方法,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • 使用Java將一個List運(yùn)用遞歸轉(zhuǎn)成樹形結(jié)構(gòu)案例

    使用Java將一個List運(yùn)用遞歸轉(zhuǎn)成樹形結(jié)構(gòu)案例

    這篇文章主要介紹了使用Java將一個List運(yùn)用遞歸轉(zhuǎn)成樹形結(jié)構(gòu)案例,本文通過詳細(xì)的案例來解釋說明了如何去操作,需要的朋友可以參考下
    2021-06-06
  • spring-boot-maven-plugin?配置有啥用

    spring-boot-maven-plugin?配置有啥用

    這篇文章主要介紹了spring-boot-maven-plugin?配置是干啥的,這個是SpringBoot的Maven插件,主要用來打包的,通常打包成jar或者war文件,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • java8 stream sort自定義復(fù)雜排序案例

    java8 stream sort自定義復(fù)雜排序案例

    這篇文章主要介紹了java8 stream sort自定義復(fù)雜排序案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Java 生成隨機(jī)字符串?dāng)?shù)組的實(shí)例詳解

    Java 生成隨機(jī)字符串?dāng)?shù)組的實(shí)例詳解

    這篇文章主要介紹了Java 生成隨機(jī)字符串?dāng)?shù)組的實(shí)例詳解的相關(guān)資料,主要是利用Collections.sort()方法對泛型為String的List 進(jìn)行排序,需要的朋友可以參考下
    2017-08-08
  • Java并發(fā)編程深入理解之Synchronized的使用及底層原理詳解 下

    Java并發(fā)編程深入理解之Synchronized的使用及底層原理詳解 下

    在并發(fā)編程中存在線程安全問題,主要原因有:1.存在共享數(shù)據(jù) 2.多線程共同操作共享數(shù)據(jù)。關(guān)鍵字synchronized可以保證在同一時刻,只有一個線程可以執(zhí)行某個方法或某個代碼塊,同時synchronized可以保證一個線程的變化可見(可見性),即可以代替volatile
    2021-09-09

最新評論