mirror of https://github.com/Rekoe/rk_svnadmin
				
				
				
			udate
							parent
							
								
									04f425bb71
								
							
						
					
					
						commit
						f34f706643
					
				|  | @ -1,86 +0,0 @@ | |||
| package com.rekoe.module; | ||||
| 
 | ||||
| import java.io.File; | ||||
| import java.io.FileInputStream; | ||||
| import java.net.URLEncoder; | ||||
| 
 | ||||
| import javax.servlet.http.HttpServletRequest; | ||||
| import javax.servlet.http.HttpServletResponse; | ||||
| import javax.servlet.http.HttpSession; | ||||
| 
 | ||||
| import org.apache.shiro.SecurityUtils; | ||||
| import org.apache.shiro.authz.annotation.RequiresAuthentication; | ||||
| import org.brickred.socialauth.SocialAuthConfig; | ||||
| import org.brickred.socialauth.SocialAuthManager; | ||||
| import org.nutz.boot.starter.freemarker.FreeMarkerConfigurer; | ||||
| import org.nutz.ioc.loader.annotation.Inject; | ||||
| import org.nutz.ioc.loader.annotation.IocBean; | ||||
| import org.nutz.lang.Encoding; | ||||
| import org.nutz.lang.Files; | ||||
| import org.nutz.lang.stream.NullInputStream; | ||||
| import org.nutz.mvc.annotation.At; | ||||
| import org.nutz.mvc.annotation.Ok; | ||||
| 
 | ||||
| /** | ||||
|  * @author 科技㊣²º¹³ <br /> | ||||
|  *         2014年2月3日 下午4:48:45<br /> | ||||
|  *         http://www.rekoe.com QQ:5382211
 | ||||
|  */ | ||||
| @IocBean(create = "init") | ||||
| @At("/user") | ||||
| public class OauthLoginAct { | ||||
| 
 | ||||
| 	@Inject | ||||
| 	private FreeMarkerConfigurer freeMarkerConfigurer; | ||||
| 
 | ||||
| 	// 需要登录之后才能访问,否则跳转到首页
 | ||||
| 	@RequiresAuthentication | ||||
| 	@At | ||||
| 	public Object authOnly() { | ||||
| 		return "You are authed!"; | ||||
| 	} | ||||
| 
 | ||||
| 	/* 提供社会化登录 */ | ||||
| 	@At("/login/?") | ||||
| 	@Ok("void") | ||||
| 	public void login(String provider, HttpSession session, HttpServletRequest req, HttpServletResponse res) throws Exception { | ||||
| 		String returnTo = req.getRequestURL().toString() + "/callback"; | ||||
| 		if (req.getParameterMap().size() > 0) { | ||||
| 			StringBuilder sb = new StringBuilder().append(returnTo).append("?"); | ||||
| 			for (Object name : req.getParameterMap().keySet()) { | ||||
| 				sb.append(name).append('=').append(URLEncoder.encode(req.getParameter(name.toString()), Encoding.UTF8)).append("&"); | ||||
| 			} | ||||
| 			returnTo = sb.toString(); | ||||
| 		} | ||||
| 		SocialAuthManager manager = new SocialAuthManager(); // 每次都要新建哦
 | ||||
| 		manager.setSocialAuthConfig(config); | ||||
| 		session.setAttribute("openid.manager", manager); | ||||
| 		String url = manager.getAuthenticationUrl(provider, returnTo); | ||||
| 		res.setHeader("Location", url); | ||||
| 		res.setStatus(302); | ||||
| 	} | ||||
| 
 | ||||
| 	// 没登录就不要登出了
 | ||||
| 	@RequiresAuthentication | ||||
| 	@At("/logout") | ||||
| 	@Ok(">>:/admin/index.rk") | ||||
| 	public void logout(HttpSession session) { | ||||
| 		// session.invalidate(); //销毁会话,啥都米有了
 | ||||
| 		SecurityUtils.getSubject().logout(); | ||||
| 	} | ||||
| 
 | ||||
| 	private SocialAuthConfig config; | ||||
| 
 | ||||
| 	public void init() throws Exception { | ||||
| 		SocialAuthConfig config = new SocialAuthConfig(); | ||||
| 		File devConfig = Files.findFile("oauth_consumer.properties_dev"); // 开发期所使用的配置文件
 | ||||
| 		if (devConfig == null) | ||||
| 			devConfig = Files.findFile("oauth_consumer.properties"); // 真实环境所使用的配置文件
 | ||||
| 		if (devConfig == null) | ||||
| 			config.load(new NullInputStream()); | ||||
| 		else | ||||
| 			config.load(new FileInputStream(devConfig)); | ||||
| 		this.config = config; | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	 rekoe
						rekoe