2014-08-30 39 views
1

我正在阅读scalatra authentication tutorialScalatra认证

根据DB,AuthenticationSupport特性写了我自己的验证策略,将basicAuth()添加到控制器,现在授权工作。但我还是不明白,我怎么可以把从会话中获取的用户ID和我应该如何使用方法toSessionfromSession此:

protected def fromSession = { case id: String => AuthUser(id) } 
protected def toSession = { case usr: AuthUser => usr.id } 

回答

4

我写了一篇关于Scentry一个相当详细的破败在我的博客(obligatory link )。要回答您的具体问题,请不要担心会议,这是由Scentry为您处理的,至少在默认情况下。如果你这么倾向,你当然可以重写它。

认为fromSession/toSession是scalatra为您添加用户到会话以及如何获得用户的行为之间的接线。 fromSession向您发送一个ID并说'给我回一个用户记录'。你可以做任何你需要处理的事情,访问数据库,打一个web服务,无论如何。 toSession是相反的,它基本上说'我有这个用户对象,你从Session中递给我,我如何得到ID?'。同样的事情,无论您需要做什么工作将用户转换为ID。

在更具体的方面,你可以认为这些为:

fromSession: String => A 
toSession: A => String 

其中字符串是你的ID和A是你的用户对象。一旦你连接起来,user,isAuthenticated等只是在你的servlet中工作(tm)。

希望有帮助!

+2

您的链接已损坏 – 2015-02-02 14:12:55

+0

因此它被更新为指向http://www.codeitall.com/2014/11/30/getting-started-with-scentry-for-scalatra/ – XeroxDucati 2015-02-02 14:20:16

+2

仍然破损.. 。 – Federico 2016-09-10 17:13:58