[英]Authentication with Play! 2.4
我正在開發Play上的新應用程序! 2.4。 我在1.4上還有其他應用程序,並且正在尋找如何實現與Play類似的安全方法! 1.x的
我創建了一個安全控制器,如下所示:
@With(Security.class)
public abstract class SecureController extends Controller {
}
然后,我有了Security.class:
public class Security extends Action.Simple {
public F.Promise<Result> call(Http.Context ctx) throws Throwable {
if(ctx.session().containsKey("pwdHash") && ctx.session().containsKey("securityId")){
User user = User.find.where().eq("id",ctx.session().get("securityId")).findUnique();
if(user != null) {
if(user.getAuthToken().equals(ctx.session().get("pwdHash"))) {
// TODO: Don't think this works yet.
ctx.request().setUsername(user.getEmail());
return delegate.call(ctx);
}
}
}
ctx.session().put("referer", ctx.request().path());
return F.Promise.pure(redirect(routes.Logon.doLogon()));
}
}
這可以正常工作,用戶可以在有效登錄后訪問頁面。 但是,我現在想做的是與1.x一樣工作,您可以使用@Check(“ admin”)之類的內容進行注釋。
在1.x中,可以通過擴展Secure.Security並實現以下功能來實現:
public static boolean check(String profile, User user)
創建注釋顯然很容易:
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface Check {
UserTask value();
}
但是,如果用戶具有給定注釋的必需權限,我現在如何讓系統檢查SecureController的每種方法? 在播放1.x中,有play.mvc.Before可以使用。
[編輯]我的意圖是添加如下內容:
@Check(UserTask.REGISTRATION)
public static Result index(int page)
經過進一步研究,我在Play中找到了解決方案! 文檔。 上面的問題已經朝着正確的方向發展,我只需要通過添加注釋並將其鏈接到操作(然后使用注釋調用函數)來擴展它。
https://www.playframework.com/documentation/2.4.x/JavaActionsComposition
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.