版权所有,禁止匿名转载;禁止商业使用。
在网上看到的很多实现的wifidog 协议一般都是PHP 的,了解一下PHP 但是比较喜欢.net ,所以实现了简单的一个进行登录认证的功能
(好多协议中的功能目前没有实现)
开发环境(vs2010 )
路由(支持wifidog协议的 ddwrt )
环境的配置
主要是进行路由的配置
截图如下:
注意红圈的部分这个我按照php 的配置
asp.net MVC 的配置如下:
端口 9999 authserver path /login/
MVC 项目布局:
loginController.cs 代码如下:
public class loginController : Controller { // // GET: /login/ public ActionResult login() { string demo = Request.QueryString.ToString(); ViewData["demo"]=demo; ViewData["gw_address"] = Request.QueryString["gw_address"]; ViewData["gw_port"] = Request.QueryString["gw_port"]; ViewData["gw_id"] = Request.QueryString["gw_id"]; //ViewData["url"]=Request.QueryString["url"]; string url = Request.QueryString["url"]; // string url = "www.cnblogs.com"; ViewData["url"] = url; Response.Write("Auth:1"); return View(); } public ActionResult index() { return View(); } public ActionResult auth() { // result data = new result(); Response.Write("Auth:1"); return View(); } public ActionResult MyLogin() { return View(); } }
代码写的比较乱,但是还是比较简单的。
login view 的代码如下:
<% Label1.Text = ViewData["demo"].ToString() + "<br/>" ; if (ViewData["url"] == null) { } else { string a = ViewData["gw_address"].ToString(); string p = ViewData["gw_port"].ToString(); string token = Guid.NewGuid().ToString(); string url=ViewData["url"].ToString(); string demo = "http://" + a + ":" + p + "/wifidog/auth?token=" + token + "url=" + url; ViewData["authurl"] = demo; Application["authurl"] = demo; } %> dalong demo app </h2> <p> <h1> 登陆页面 </h1> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> </p> [ <%: Html.ActionLink("进入", "MyLogin", "login")%> ] Mylogin view 的代码如下: <% string tepdemo = "Auth: 1"; byte[] data = System.Text.Encoding.Default.GetBytes(tepdemo); char[] list = System.Text.Encoding.Default.GetChars(data); Response.Write(list, 0, list.Length); Response.Redirect(Application["authurl"].ToString()); %>
手机端的测试效果:
window phone 连接wifi 的显示界面
点击进入如下效果:
连接成功标志:
打开网页:
其中对于认证最重要的是按照协议返回的数据:
比如我通过返回的数据:
Auth: 1
拒绝为: Auth: 0
以上只是简单的测试,实际应用需要很多的东西。