play for scala 实现SessionFilter 过滤未登录用户跳转到登录页面_java

一、编写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") 是用来排除登录页面,这个页面不登录也应该是可见的,防止出现死循环跳转

!requestHeader.path.contains("/assets/") 是用来排除静态资源文件的,如图片、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 实现SessionFilter 过滤未登录用户跳转到登录页面,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索filter
, scala
, 过滤
实现SessionFilter
scala filter、scala filter函数、scala map filter、spark scala filter、scala list filter,以便于您获取更多的相关知识。

时间: 2024-11-08 22:46:38

play for scala 实现SessionFilter 过滤未登录用户跳转到登录页面_java的相关文章

PHP未登录自动跳转到登录页面如何实现

下面一段代码给大家分享php未登录自动跳转到登录页面,具体代码如下所示: <?php namespaceHome\Controller; useThink\Controller; classBaseControllerextendsController{   //基础信息,判断登陆   publicfunction__construct(){     parent::__construct();     /*if(!session('?user')){       redirect(U('Hom

PHP未登录自动跳转到登录页面_php实例

下面一段代码给大家分享php未登录自动跳转到登录页面,具体代码如下所示: <?php namespace Home\Controller; use Think\Controller; class BaseController extends Controller{ //基础信息,判断登陆 public function __construct(){ parent::__construct(); /*if(!session('?user')){ redirect(U('Home/Login/ind

PHP未登录自动跳转到登录页面

下面一段代码给大家分享php未登录自动跳转到登录页面,具体代码如下所示: <?php namespace Home\Controller; use Think\Controller; class BaseController extends Controller{ //基础信息,判断登陆 public function __construct(){ parent::__construct(); /*if(!session('?user')){ redirect(U('Home/Login/ind

如何在java controller实现登录超时跳转到登录页面

问题描述 如何在java controller实现登录超时跳转到登录页面 如何在java controller实现登录超时跳转到登录页面 超时后点击所有功能都跳转到登录页面对整个web工程都有用 解决方案 Struts 拦截器权限控制[通过拦截器实现登录后跳转到登录前页面]Struts 拦截器权限控制[通过拦截器实现登录后跳转到登录前页面]Struts 拦截器权限控制[通过拦截器实现登录后跳转到登录前页面] 解决方案二: 写个拦截器,在里面判断session过期,跳转 解决方案三: 最简单的是写

PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)_php实例

1. 2. <if condition="$GLOBALS['userinfo']['user_id'] gt 0"> <span class="help_wz"><a href="{$Think.config.VIP_URL}/Member/user_pwd/" style="color:#404958;">找回登录密码</a></span> <else/&g

Struts 拦截器权限控制【通过拦截器实现登录后跳转到登录前页面】

应用情形:在web项目中,经常会遇到用户未登录或SESSION失效时用户发出非法的权限操作,如新闻的评论.文件的下载等等,在此我们可以使用struts拦截器对该用户发出的请求进行拦截,拦截后判断用户是否登录或SESSION是否有效,然后进行其正常操作.具体实例如下: 新建一个拦截器类UserInterceptor ,UserInterceptor.java代码如下 [java] view plaincopyprint? package com.hsinghsu.test.interceptor;

MVC4自定义授权过滤器如何对免登录用户跳过session检查

问题描述 本人MVC新手,正在试着做权限过滤器,目前基本功能都可以实现,但是有个问题一直解决不了我通过filterContext.HttpContext.User.Identity.IsAuthenticated判断用户是否已经完成登录如果登录了就继续往下判断session是否过期,session没有过期就判断是否拥有权限可是如果用户是免登录即保存密码上来的,那么当判断到session的时候一定是null,会导致重定向到登录页.结果我就想通过filterContext.HttpContext.R

WordPress实现退出登录后跳转到指定页面

这个问题也很好解决,将下面的php代码放到当前主题的functions.php中即可:  代码如下 复制代码 add_filter('logout_url', 'ludou_logout_redirect', 10, 2); function ludou_logout_redirect($logouturl, $redir) {   $redir = 'http://www.111cn.net/'; // 这里改成你要跳转的网址   return $logouturl . '&redirect_

WordPress退出登录后跳转到指定页面的方法

现在退出登录WordPress后台后跳转到登录界面,然后我们再点击一下跳转到首页,这样子很麻烦. 我们需要wordpress推出后跳出到外面指定的界面,那要怎么做呢? 将下面的php代码放到当前主题的functions.php中即可:  代码如下 复制代码 add_filter('logout_url', 'logout_redirect', 10, 2);   function logout_redirect($turl, $redir) {   $redir = 'http://www.11