[原创] .net webservice 登录后 才可以访问其它的方法 2种方法
2011-11-16 23:25
316 查看
1.使用SoapHeader
1)定义一个类
2)Webservice文件
2. 自己想的办法, 不知道怎么样. 随便说来.
基本的思想是: 如果登录成功的话, 保存客户端的IP(这里可以用MAC什么的都可以, 只要是客户端唯一标记就可以了)到Cache里(Cache可以放用户名,密码什么的都可以).
面的Action里去读取Cache里是否有指定的IP的信息. 如果有就是登录成功,如果没有就是没有登录.
调用完Action可以把Cache里的这个Key为该IP的删除, 这样就可以防止一次登录就一直连接.
(想: 这里也可以给Cache设置一个过期时间. 这样一次登录后面就可以不用再调用登录接口了, 可能会出现接口调用一半又不能用了. 所有还是觉得每次都要登录一下.)
个人觉得 用这种方法 比较好一些 , 什么语言都可以这样的思想来开发, 什么语言调用的时候也没有障碍.
有哪里不对的请大家多多指点, 谈论, 谢谢.
1)定义一个类
public class WSSoapHeader : System.Web.Services.Protocols.SoapHeader
{
private string _userName;
public string UserName
{
get { return _userName; }
set { _userName = value; }
}
private string _password;
public string Password
{
get { return _password; }
set { _password = value; }
}
}
{
private string _userName;
public string UserName
{
get { return _userName; }
set { _userName = value; }
}
private string _password;
public string Password
{
get { return _password; }
set { _password = value; }
}
}
2)Webservice文件
public class WebserviceDemo : System.Web.Services.WebService
{
public WSSoapHeader myHeader = new WSSoapHeader();
[WebMethod]
[System.Web.Services.Protocols.SoapHeader("myHeader")]
public string Helloword()
{
if (!(myHeader.UserName == “user” && myHeader.Password == “123”))
{
return "login false";
}
}
}
这个方法, 对于.net客户端调用, 没什么问题, 对于其它语言的, 那就不知道了....{
public WSSoapHeader myHeader = new WSSoapHeader();
[WebMethod]
[System.Web.Services.Protocols.SoapHeader("myHeader")]
public string Helloword()
{
if (!(myHeader.UserName == “user” && myHeader.Password == “123”))
{
return "login false";
}
}
}
2. 自己想的办法, 不知道怎么样. 随便说来.
基本的思想是: 如果登录成功的话, 保存客户端的IP(这里可以用MAC什么的都可以, 只要是客户端唯一标记就可以了)到Cache里(Cache可以放用户名,密码什么的都可以).
面的Action里去读取Cache里是否有指定的IP的信息. 如果有就是登录成功,如果没有就是没有登录.
调用完Action可以把Cache里的这个Key为该IP的删除, 这样就可以防止一次登录就一直连接.
(想: 这里也可以给Cache设置一个过期时间. 这样一次登录后面就可以不用再调用登录接口了, 可能会出现接口调用一半又不能用了. 所有还是觉得每次都要登录一下.)
[WebMethod]
public string CheckLogin(string username, string pwd)
{
if (username == "123" && pwd == "123")
{
string ip = GetUserIP();
CCD.WebCache.Insert(ip, Guid.NewGuid().ToString());
return ip;
}
else
{
return "login fail.";
}
}
public string GetUserIP()
{
string userIP;
if (HttpContext.Current.Request.ServerVariables["HTTP_VIA"] == null)
{
userIP = HttpContext.Current.Request.UserHostAddress;
}
else
{
userIP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
}
return userIP;
}
[WebMethod]
public string Action()
{
if (CCD.WebCache.Get(GetUserIP()).ToString()!="")
{
CCD.WebCache.Remove(GetUserIP());
return "登录成功";
}
else
{
return "登录失败";
}
}
public string CheckLogin(string username, string pwd)
{
if (username == "123" && pwd == "123")
{
string ip = GetUserIP();
CCD.WebCache.Insert(ip, Guid.NewGuid().ToString());
return ip;
}
else
{
return "login fail.";
}
}
public string GetUserIP()
{
string userIP;
if (HttpContext.Current.Request.ServerVariables["HTTP_VIA"] == null)
{
userIP = HttpContext.Current.Request.UserHostAddress;
}
else
{
userIP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
}
return userIP;
}
[WebMethod]
public string Action()
{
if (CCD.WebCache.Get(GetUserIP()).ToString()!="")
{
CCD.WebCache.Remove(GetUserIP());
return "登录成功";
}
else
{
return "登录失败";
}
}
个人觉得 用这种方法 比较好一些 , 什么语言都可以这样的思想来开发, 什么语言调用的时候也没有障碍.
有哪里不对的请大家多多指点, 谈论, 谢谢.
相关文章推荐
- Asp.net的登录验证方法Web.config访问权限配置
- Asp.net的登录验证方法Web.config访问权限配置
- asp.net的登录验证方法 Web.config 的作用范围 拒绝与巧用允许 访问权限
- Asp.net的登录验证方法Web.config访问权限配置
- asp.net的登录验证方法 Web.config 的作用范围 拒绝与巧用允许 访问权限
- Apache web服务器修改登录端口和访问端口的方法
- RabbitMQ3.7.2 安装完后web控制台不可以访问的解决方法
- asp.net程序 用户 'NT AUTHORITY/NETWORK SERVICE' 登录失败解决两个方法
- 采集/自动登录啊都可以用这两个方法实现 asp.net
- asp.net访问网络路径方法(模拟用户登录)
- 登录iis7 网站服务器上网站网页可以访问 但远程访问网站网页不能访问的解决方法
- net Web Service 方法重载
- Struts2.0里的过滤器interceptor之用户只可以访问Login.action与Register.action,访问其它.action的链接时,自动切换到登录页面
- 在web.config里面怎么设置FORMS验证:某几个页面可以匿名访问,其他页面都需要登录(转)
- 【转】net Web Service 方法重载
- 解决 Asp.Net Forums 与现有Web系统 统一登录的方法(:--))
- .NET WebApi Delete方法访问提示:“HTTP 错误 405.0 - Method Not Allowed”
- asp.net的登录验证方法 Web.config 的作用范围 配置
- Custom WEB Service (ASP.NET)AAD验证登录
- 【转】net Web Service 方法重载