我想使用Javascript调用.NET WebService,如何限制访问?

发布于 2024-11-05 09:54:46 字数 305 浏览 0 评论 0原文

我有一个 .net Web 服务,例如 http://tempurl.org/webservice.asmx 我想使用 Javascript 来调用它,也许是一些 jquery 库。 Q1:如何限制只有我自己可以访问? Q2:或者如何实现基于角色的身份验证。

编辑: 我想独立部署 Web 服务,例如:

ProjectA
ProjectB
ProjectWebService

我需要人们在 ProjectA 和 ProjectB 中登录并且可以使用 ProjectWebService。

I have a .net webservice like http://tempurl.org/webservice.asmx
I want to call it using Javascript, maybe some jquery lib.
Q1: How to limit the access only to myself?
Q2: or How to implement a role based authentication.

Edit:
I want to deploy the webservice independently like:

ProjectA
ProjectB
ProjectWebService

I need People login in ProjectA and ProjectB and can use ProjectWebService.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

埖埖迣鎅 2024-11-12 09:54:46

只是一个建议,正如你所知,剥猫皮的方法有很多种,所以这是一种。
首先使用对服务的调用启用会话状态

 [WebMethod(EnableSession = true)] 

然后使用用于登录的 Web 服务方法将用户详细信息保存到会话中,这支持 asp.net 的标准会员资格提供程序,警告示例代码

 public bool Login(string userName, string password)
 {
      //validate login
      var user = Membership.GetUser(userName);
      var valid = Membership.ValidateUser(user.UserName, password));
      if (valid)
          HttpContext.Current.Session["user"] = user;
      return valid;
 }

然后您可以在 Web 服务方法中针对用户进行验证。

public void SomeServerMethod()
{
    var user = HttpContext.Current.Session["user"]; 

    if (user == null)
         throw new Exception("Please login first");

     if (user.IsInRole("FooRole")
             DoStuff();
     else
         throw new Exception("Seriously? dude you dont have those rights");

 }

要对抗网络缓降,最好使用 https,祝你好运:)

just a suggestion, as you know theres many ways to skin a cat so heres one.
Firstly enable session state across calls to the service using

 [WebMethod(EnableSession = true)] 

Then have a web service method for login that saves the user details to the session, this supports the standard Membership provider for asp.net, warning sample code

 public bool Login(string userName, string password)
 {
      //validate login
      var user = Membership.GetUser(userName);
      var valid = Membership.ValidateUser(user.UserName, password));
      if (valid)
          HttpContext.Current.Session["user"] = user;
      return valid;
 }

Then you can in a web service method validate against the user.

public void SomeServerMethod()
{
    var user = HttpContext.Current.Session["user"]; 

    if (user == null)
         throw new Exception("Please login first");

     if (user.IsInRole("FooRole")
             DoStuff();
     else
         throw new Exception("Seriously? dude you dont have those rights");

 }

To counter network easedropping best go to Https, good luck :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文