Playframework 播放框架-自定义身份验证

Playframework 播放框架-自定义身份验证,playframework,Playframework,我已经尝试了有关游戏安全模块的教程!1.2.3. 身份验证机制非常简单明了 我有个问题。如果我想实现自定义身份验证,是否可以自定义安全模块,或者我必须从头开始编写代码 例如,我想通过请求头参数进行身份验证,我应该怎么做?安全模块很小:您可以从该模块获取所有代码,将其放入应用程序中,并根据需要自定义它如果您想做更大的事情,可以编写插件。您可以在my上看到一个示例,不幸的是它仍在构建中,但应该包含您需要的所有内容。请特别参阅。您可以使用@Before注释在控制器中对基本身份验证执行类似操作。然后在r

我已经尝试了有关游戏安全模块的教程!1.2.3. 身份验证机制非常简单明了

我有个问题。如果我想实现自定义身份验证,是否可以自定义安全模块,或者我必须从头开始编写代码


例如,我想通过请求头参数进行身份验证,我应该怎么做?

安全模块很小:您可以从该模块获取所有代码,将其放入应用程序中,并根据需要自定义它

如果您想做更大的事情,可以编写插件。您可以在my上看到一个示例,不幸的是它仍在构建中,但应该包含您需要的所有内容。请特别参阅。

您可以使用
@Before
注释在控制器中对基本身份验证执行类似操作。然后在request方法中检查account参数是否已设置

@之前
静态void checkAuth(){
//获取身份验证标头
Header auth=request.headers.get(“授权”);
if(auth==null)返回;
//获取基本身份验证值
字符串authValue=auth.value();
if(authValue==null)返回;
//拆分标题组件
字符串[]authComp=authValue.split(“”);
如果(authComp.length!=2)返回;
//解码base64身份验证字符串
stringbasic=新字符串(Codec.decodeBASE64(authComp[1]);
字符串[]userPass=basic.split(“:”);
如果(userPass.length!=2)返回;
//尝试获取帐户
字符串email=userPass[0];
字符串pass=userPass[1];
字符串passSHA1=Codec.hexSHA1(pass);
List accounts=models.Account.find(“电子邮件密码”,email,passSHA1.asList();
如果(accounts.size()!=1)返回;
//按要求记帐
request.args.put(“_authenticatedUser”,accounts.get(0));
}