繁体   English   中英

ASP.NET:MVC 4-使用Web服务作为数据存储的简单登录

[英]ASP.NET: MVC 4 - Simple Login with Web Services as the data store

我正在使用表单身份验证构建ASP.NET MVC 4应用程序。

在我的帐户控制器中,我从表格中收到用户名和密码。

如果用户名/密码正确,则Web服务将返回true / false。

    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public ActionResult Login(LoginModel model, string returnUrl)
    {
         bool isValid=MyWebService.ValidateLogin(model.Name,model.Pass);

          if(isValid){
            *** Here: Tell ASP.NET that model.Name is a logged in user
            ***       and to keep a cookie so that they stay logged in ???
            RedirectToAction(...);
           }
     }  

我希望尽可能多地利用ASP.NET基础结构,但要使用Web Service获得正确的登录名。

在框架级别的支持下,最全面的方法是实现自定义MembershipProvider 这非常简单,并且具有非常易于实现的功能。 如果您想利用其他成员资格,身份验证和授权,这可能是您的最佳选择。 这是您的步骤:

  • 创建一个名为YourMembershipProvider的新类
  • MembershipProvider继承并实现抽象方法
  • 浏览方法并实现计数的方法,即:
    • ValidateUser
    • GetUser

您的GetUser将使用username并使用您的Web服务来查找您要跟踪的任何相关成员详细信息。

ValidateUser将是您调用Web服务的地方。 如果用户签出,则返回true

最后,更新您的Web配置。 在System.Web中,您将需要以下内容:

<membership defaultProvider="YourMembershipProvider">
  <providers>
    <clear />
    <add name="YourMembershipProvider" type="YourNamespace.YourMembershipProvider" />
  </providers>
</membership>

因此,要概述...实现您的类,连接您的Web配置,使用框架来处理其余部分。

干杯。

对我来说看起来不错,也许我会在您对Web服务的调用中添加另一个参数,以便在登录时出现错误时返回错误值。

bool isValid=MyWebService.ValidateLogin(model.Name,model.Pass, rtnErrorStatusCode);

Web服务登录后,您可以随时检查用户是否使用

If (Request.IsAuthenticated = False) Then
  ' This user has not logged in
  ' redirect to login page here
End if

至于cookie,我想只有在您要保留一些会话信息时才需要它。

保存cookie只会为您提供一种不同的方法来知道用户已登录,但是“ Request.Authenticated”语句还会告诉您用户是否已登录,因为它返回一个布尔值,因此可能拥有cookie只是重复该操作,因此除非您存储会话特定的信息(例如用户偏好或主题等),否则可能不需要Cookie。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM