implementation(group: 'org.jooby', name: 'jooby-auth', version: 'x.x.x') implementation(group: 'org.jooby', name: 'jooby-jdbc', version: 'x.x.x') use(new Jdbc()); use(new Auth() .basic(new JdbcAuthenticator() .query("SELECT password FROM users WHERE username = ?") ) ); use(new Auth().authenticator("basic")); use("/admin/**").roles("admin"); @Path("/admin") @Roles("admin") public Result adminPage() { } import org.jooby.Jooby; import org.jooby.Results; import org.jooby.handlers.CorsHandler; import org.jooby.handlers.LocalhostHandler; import org.jooby.json.Jackson; import org.jooby.rocker.Rockerby; import org.jooby.rocker.RockerModule; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.List; public class MyApp extends Jooby { final Logger log = LoggerFactory.getLogger(getClass()); { use(new Jackson()); use(new Rockerby(new RockerModule("home"))); /** * Enable CORS. See: https://en.wikipedia.org/wiki/Cross-origin_resource_sharing */ use("*", new CorsHandler().allowedMethods("GET", "PUT", "POST", "DELETE")); /** * Avoid clickjacking. See: https://en.wikipedia.org/wiki/Clickjacking */ use(new LocalhostHandler()); /** * Simple route calling a Rocker template. */ get("/", () -> Results.html("home")); /** * Protect all routes using OAuth2 (except /auth and /auth/callback). */ /*use(new AuthForJooby() // OAuth2 .use(GithubCallback.class) .loginPage("/auth/login") .userAuthProvider(new UserAuthProvider()) // Logout .logout("/auth/logout") // Store users in the session .store(User.class) // Anonymous access .authorizer(AnonAuthorizer.class) ); /** * OAuth2 login, login and callback ULR/path must match the provider configuration. */ /*use(new AuthProvider() // login page .loginPage("/auth/login") // ERROR: callback must match the provider configuration .callback("/") // The Github builder require these props .authorizePath("https://github.com/login/oauth/authorize") .accessTokenPath("https://github.com/login/oauth/access_token") // Github app credentials .appId(System.getProperty("github.appid")) .appSecret(System.getProperty("github.secret")) // Build the auth provider .build(GithubProfile.class)); /** */ use(new Auth() .basic(new JdbcAuthenticator() .query("SELECT password FROM users WHERE username = ?") )); /* use(new Auth().authenticator("basic")); // Admin filter use("/admin/**").roles("admin"); // Admin page get("/admin", () -> { return Results.html("admin"); }); } public static void main(final String[] args) { run(MyApp::new, args); } } server: port: 8080 db: driver: "org.h2.Driver" url: "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1" username: "sa" password: "" sex: "MALE" name: "Mad Max" email: "max@road.com"


上一篇:
下一篇:
切换中文